我正在使用SQL / PL开发人员,我有一个名为Appeal的表,它有2个attribut OpenDate和CloseDate。我想添加一个约束来确保开放日期小于关闭日期。我在这张表中有很多记录。
这是我的代码:
alter table appeal
add constraint Check_Dates
check (OpenDate < CloseDate)
我得到错误说: ORA-02293:无法验证(STSTEM.CHECK_DATES) - 检查违反约束
任何ieads? 感谢名单
答案 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