我使用 SQL/PL 开发人员,我有一个名为 Appeal 的表,它有 2 个属性 OpenDate 和 CloseDate。我想添加一个约束以确保打开日期小于关闭日期。我在这个表中有很多记录。
这是我的代码:
alter table appeal
add constraint Check_Dates
check (OpenDate < CloseDate)
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:ORA-02293:无法验证(STSTEM.CHECK_DATES) - 检查约束违反
有什么问题吗?谢谢
你的约束看起来不错,我已经测试过了:
create table appeal ( OpenDate date, CloseDate date);
alter table appeal
add constraint Check_Dates
check (OpenDate < CloseDate);
insert into appeal values ( sysdate, sysdate - 1 );
Run Code Online (Sandbox Code Playgroud)
结果如下:
架构创建失败:ORA-02290:违反检查约束 (USER_4_44096.CHECK_DATES)
问题是您的数据库中已经有 OpenDate < 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);
Run Code Online (Sandbox Code Playgroud)
在这里你的问题:
架构创建失败:ORA-02293:无法验证 (USER_4_E4450.CHECK_DATES) - 检查约束违反