2

将来の日付を許可しない制約を作成しようとしています。私はこれを持っています:

ALTER TABLE PACIENTE ADD CONSTRAINT ck_FechaNacimiento
CHECK (FechaNacimiento<=current_date);

しかし、私は得てerror 02436います。

4

3 に答える 3

4

非決定的制約は作成できません。current_dateしたがって、次のような関数を参照する制約やsysdate、呼び出すたびに異なる値を返す制約を作成することはできません。

この種のことを強制したい場合は、ビジネスルールに違反した場合にエラーをスローするトリガーをテーブルに作成する必要があります。

CREATE OR REPLACE TRIGGER trg_paciente
  BEFORE INSERT OR UPDATE 
  ON paciente
  FOR EACH ROW
BEGIN
  IF( :new.FechaNacimiento > current_date )
  THEN
    RAISE_APPLICATION_ERROR( -20001, 'FechaNacimiento<=current_date must be in the past' );
  END IF;
END;
于 2013-10-01T00:24:09.603 に答える
-3
ALTER TABLE PACIENTE ADD CONSTRAINT ck_FechaNacimiento CHECK (FechaNacimiento<=SYSDATE);
于 2013-10-01T00:20:55.393 に答える