Oracle Check Constraint违规

时间:2014-07-28 22:08:50

标签: sql oracle

我在表X的日期列上创建了一个约束。当我在日期创建检查约束为date > '01-jan-2000'时,会出现错误消息(" 违反检查约束")。当我再次尝试检查1996年之后的日期(date > '01-jan-1996')时,它运作良好。

有原因吗?

我使用了这段代码:

ALTER TABLE X 
ADD CONSTRAINT DATE_CONST CHECK(DATE>'01-JAN-2000')     --  ERROR

ALTER TABLE X 
ADD CONSTRAINT DATE_CONST CHECK(DATE>'01-JAN-1996')     --  WORKED

1 个答案:

答案 0 :(得分:0)

你做错了两件事。 a)您不能将名称分配给列关键字,例如" DATE"。 b)当您添加CONSTRAINT时必须转换日期:

ALTER TABLE test ADD CONSTRAINT DATE_CONST CHECK(testdate>to_date('01-JAN-2000', 'dd-mon-yyyy'));

http://sqlfiddle.com/#!4/98198/9就是这个问题的一个例子。

编辑:如果您的表在指定日期之前有记录,则将编译检查约束但它将无效。您必须在指定日期记录之前更新为新日期。