2

我正在尝试创建一个不允许未来年份日期的约束。我有这个:

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

但我得到了error 02436

4

3 回答 3

4

您不能创建非确定性约束。因此,您不能创建一个引用类似函数current_datesysdate每次调用它时返回不同值的约束。

如果你想强制执行这种事情,你需要在表上创建一个触发器,如果​​违反了业务规则,就会抛出一个错误,即

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 回答
0

我再次尝试了这个并且没有显示错误,顺便感谢一下:

ALTER TABLE EXAMENPACIENTE 添加约束 ExamenPaciente_FechaExamen_c1 CHECK (FechaExamen<='30-SEP-2013');

于 2013-10-01T00:56:46.130 回答
-3
ALTER TABLE PACIENTE ADD CONSTRAINT ck_FechaNacimiento CHECK (FechaNacimiento<=SYSDATE);
于 2013-10-01T00:20:55.393 回答