未来日期SQL Developer

时间:2013-10-01 00:17:55

标签: sql oracle

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

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

但我得到了error 02436

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

我再次尝试过,并没有显示错误,谢谢你的方式:

ALTER TABLE EXAMENPACIENTE ADD CONSTRAINT ExamenPaciente_FechaExamen_c1 检查(FechaExamen&lt; ='30-SEP-2013');

答案 2 :(得分:-3)

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