SQL oracle将检查约束添加到现有表

时间:2014-04-01 09:39:26

标签: sql oracle

我正在使用SQL / PL开发人员,我有一个名为Appeal的表,它有2个attribut OpenDate和CloseDate。我想添加一个约束来确保开放日期小于关闭日期。我在这张表中有很多记录。

这是我的代码:

alter table appeal
add constraint Check_Dates
check (OpenDate < CloseDate)

我得到错误说:     ORA-02293:无法验证(STSTEM.CHECK_DATES) - 检查违反约束

任何ieads? 感谢名单

2 个答案:

答案 0 :(得分:3)

你的约束看起来是正确的,我测试了它:

create table appeal ( OpenDate date,  CloseDate date);

alter table appeal
add constraint Check_Dates
check (OpenDate < CloseDate);

insert into appeal values ( sysdate, sysdate - 1 );

结果如下:

  

架构创建失败:ORA-02290:检查约束   (USER_4_44096.CHECK_DATES)违反了

问题是你已经拥有OpenDate&lt;行了数据库中的CloseDate值。在创建约束之前修复它。查看行为改变句子顺序:

create table appeal ( OpenDate date,  CloseDate date);

insert into appeal values ( sysdate, sysdate - 1 );

alter table appeal
add constraint Check_Dates
check (OpenDate < CloseDate);

这是你的问题:

  

架构创建失败:ORA-02293:无法验证   (USER_4_E4450.CHECK_DATES) - 检查违反约束

答案 1 :(得分:0)

试试这个 改变上诉 添加约束Check_Dates check(OpenDate&lt; CloseDate)ENABLE NOVALIDATE;

您将检查以前的数据是否有错误,但任何新数据都属于CHECK