问题描述
嗨,
我正在尝试在表级别创建检查contraint。我尝试了以下两种结构,在我的理解中应该具有相同的效果。
第一个运行完美,运行我得到的第二个
ORA-02290: “检查约束 (% s.% s) 违反”
为什么第二个不被接受?
非常感谢。
问候,
安东尼奥
我正在尝试在表级别创建检查contraint。我尝试了以下两种结构,在我的理解中应该具有相同的效果。
ALTER TABLE table1 ADD CONSTRAINT CHK_1 CHECK ( col1 || col2 <> col3 || col4); ALTER TABLE table1 ADD CONSTRAINT CHK_2 CHECK ( col1 <> col3 AND col2 <> col4);复制
第一个运行完美,运行我得到的第二个
ORA-02290: “检查约束 (% s.% s) 违反”
为什么第二个不被接受?
非常感谢。
问候,
安东尼奥
专家解答
这些甚至都不是一样的!
如果任一条件为假,则第二个将失败。添加导致误报的空处理和串联的差异,您将获得一整堆行,这些行将接受一个约束,但不接受另一个约束。
例如,将它们转换为查询,并给出不同的结果:
如果任一条件为假,则第二个将失败。添加导致误报的空处理和串联的差异,您将获得一整堆行,这些行将接受一个约束,但不接受另一个约束。
例如,将它们转换为查询,并给出不同的结果:
create table t ( c1 int, c2 int, c3 int, c4 int ); insert into t values ( 1, 2, 1, 4 ); insert into t values ( 11, 1, 1, 11 ); select * from t where c1 || c2 <> c3 || c4; C1 C2 C3 C4 1 2 1 4 select * from t where c1 <> c3 and c2 <> c4; C1 C2 C3 C4 11 1 1 11复制
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
752次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
647次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
569次阅读
2025-04-20 10:07:02
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
521次阅读
2025-04-22 00:13:51
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
514次阅读
2025-04-17 17:02:24
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
497次阅读
2025-04-22 00:20:37
一页概览:Oracle GoldenGate
甲骨文云技术
480次阅读
2025-04-30 12:17:56
火焰图--分析复杂SQL执行计划的利器
听见风的声音
438次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
381次阅读
2025-04-15 14:48:05
OR+DBLINK的关联SQL优化思路
布衣
371次阅读
2025-05-05 19:28:36