问题描述
SQL> CREATE TABLE A(NO1 NUMBER(2) 主键,NO2 NUMBER(2));
创建的表。
SQL> CREATE TABLE B(NO1 NUMBER(2) 主键,NO2 NUMBER(2));
创建的表。
SQL> ALTER TABLE A添加约束AA外键 (NO2) 引用B(NO1);
表变了。
SQL> ALTER TABLE B添加约束BB外键 (NO2) 引用B(NO1);
表变了。
SQL> 插入到一个值 (10,20) 中;
插入值 (10,20)
*
第1行的错误:
ORA-02291: 完整性约束 (SUBK.AA) 违反-找不到父项
SQL> 插入到B值 (10,20);
插入B值 (10,20)
*
第1行的错误:
ORA-02291: 完整性约束 (SUBK.BB) 违反-找不到父键
创建的表。
SQL> CREATE TABLE B(NO1 NUMBER(2) 主键,NO2 NUMBER(2));
创建的表。
SQL> ALTER TABLE A添加约束AA外键 (NO2) 引用B(NO1);
表变了。
SQL> ALTER TABLE B添加约束BB外键 (NO2) 引用B(NO1);
表变了。
SQL> 插入到一个值 (10,20) 中;
插入值 (10,20)
*
第1行的错误:
ORA-02291: 完整性约束 (SUBK.AA) 违反-找不到父项
SQL> 插入到B值 (10,20);
插入B值 (10,20)
*
第1行的错误:
ORA-02291: 完整性约束 (SUBK.BB) 违反-找不到父键
专家解答
如果你有形成一个圆的外键,你需要声明其中至少一个可延期 (最初延期):
这将延迟验证约束,直到您提交。所以,如果你添加的行永远不会得到父,你会看到和错误,当事务结束:
CREATE TABLE A(NO1 NUMBER(2) PRIMARY KEY,NO2 NUMBER(2)); CREATE TABLE B(NO1 NUMBER(2) PRIMARY KEY,NO2 NUMBER(2)); ALTER TABLE A ADD CONSTRAINT AA FOREIGN KEY(NO2) REFERENCES B(NO1); ALTER TABLE B ADD CONSTRAINT BB FOREIGN KEY(NO2) REFERENCES B(NO1) deferrable initially deferred; INSERT INTO B VALUES(10,20); INSERT INTO A VALUES(20,10); select * from a; NO1 NO2 20 10 select * from b; NO1 NO2 10 20复制
这将延迟验证约束,直到您提交。所以,如果你添加的行永远不会得到父,你会看到和错误,当事务结束:
INSERT INTO B VALUES(11,30); commit; ORA-02091: transaction rolled back ORA-02291: integrity constraint (CHRIS.BB) violated - parent key not found复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
654次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
624次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
529次阅读
2025-04-20 10:07:02
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
524次阅读
2025-04-08 09:12:48
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
479次阅读
2025-04-22 00:20:37
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
475次阅读
2025-04-17 17:02:24
Oracle 19c RAC更换IP实战,运维必看!
szrsu
456次阅读
2025-04-08 23:57:08
一页概览:Oracle GoldenGate
甲骨文云技术
454次阅读
2025-04-30 12:17:56
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
449次阅读
2025-04-22 00:13:51
火焰图--分析复杂SQL执行计划的利器
听见风的声音
404次阅读
2025-04-17 09:30:30