在关系数据库中,**参照完整性(Referential Integrity)**用来保证“子表(从表)中的外键值,必须在父表(主表)的主键中存在,或者为 NULL”。
外键(Foreign Key)就是实现参照完整性的核心机制。
下面从原理 → 创建方式 → 约束行为 → 示例来说明。
主表(被引用表)
从表(引用表)
数据库自动校验
-- 主表
CREATE TABLE department (
dept_id INT PRIMARY KEY,
dept_name VARCHAR(50)
);
-- 从表
CREATE TABLE employee (
emp_id INT PRIMARY KEY,
emp_name VARCHAR(50),
dept_id INT,
FOREIGN KEY (dept_id)
REFERENCES department(dept_id)
);
✅ 效果:
INSERT INTO employee VALUES (1, 'Tom', 10);
UPDATE employee SET dept_id = 99 WHERE emp_id = 1;
通过 ON DELETE / ON UPDATE 控制:
FOREIGN KEY (dept_id)
REFERENCES department(dept_id)
ON DELETE RESTRICT
ON DELETE CASCADE
ON DELETE SET NULL
CREATE TABLE department (
dept_id INT PRIMARY KEY
);
CREATE TABLE employee (
emp_id INT PRIMARY KEY,
dept_id INT,
FOREIGN KEY (dept_id)
REFERENCES department(dept_id)
ON DELETE CASCADE
);
| 操作 | 结果 |
|---|---|
| 插入员工到不存在的部门 | 失败 |
| 删除有员工的部门 | 员工一起被删 |
| 更新部门 ID | 可配合 ON UPDATE CASCADE |
外键通过“约束从表值必须来自主表主键,并在增删改时自动校验和联动”,来实现参照完整性。
如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。