将来の日付を許可しない制約を作成しようとしています。私はこれを持っています:
ALTER TABLE PACIENTE ADD CONSTRAINT ck_FechaNacimiento
CHECK (FechaNacimiento<=current_date);
しかし、私は得てerror 02436
います。
非決定的制約は作成できません。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;
ALTER TABLE PACIENTE ADD CONSTRAINT ck_FechaNacimiento CHECK (FechaNacimiento<=SYSDATE);