参照完整性(Referential Integrity) 是关系数据库中用于保证表与表之间关联数据一致性的规则,核心依赖于外码(外键,Foreign Key) 与主码(主键,Primary Key) 的约束。
当对数据的操作破坏了“外键必须对应另一个表中存在的主键值(或为空)”这一规则时,即违反参照完整性。
以下是最常见的违反情况,按操作类型说明:
向**从表(子表,有外键的表)**插入数据时:
NULL(若允许为空则不算违反)。例:
Student(Sno 主键, ...)SC(Sno 外键 → Student.Sno, Cno, ...)SC 中 Sno = '999' ,但 Student 中无 999 → ❌ 违反参照完整性例:
Student.Sno='001' 改为 '002'SC 中还有 Sno='001' 的记录且未级联 → ❌ 违反从主表删除记录,但从表中仍有引用该主键的外键记录,且:
ON DELETE CASCADEON DELETE SET NULL例:
Student 中 Sno='001'SC 中仍有 Sno='001' → ❌ 违反参照完整性以下情况不违反参照完整性:
NULL(若允许空);CASCADE:自动删/改从表SET NULL:从表外键置空SET DEFAULT:置默认值只要“从表引用了主表中不存在的主键值”,就违反参照完整性。
如果你需要,我也可以帮你画一张主表 / 从表违规示意图,或结合 SQL 约束写法说明。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。