我在表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
答案 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就是这个问题的一个例子。
编辑:如果您的表在指定日期之前有记录,则将编译检查约束但它将无效。您必须在指定日期记录之前更新为新日期。