根据题目要求,我们需要在 audit
表上创建一个外键约束,使其 EMP_no
列引用 employees_test
表的主键 ID
。
知识点
1. 外键约束(Foreign Key Constraint)
- 外键约束用于在两个表之间建立关联关系,确保数据的完整性。
- 外键列的值必须是被引用表中主键列的值,或者为
NULL
(如果允许)。
2. 级联操作(ON DELETE CASCADE
和 ON UPDATE CASCADE
)
ON DELETE CASCADE
:当被引用表中的记录被删除时,引用表中对应的记录也会被删除。ON UPDATE CASCADE
:当被引用表中的主键值被更新时,引用表中对应的外键值也会被更新。
3. 注意事项
- 外键约束的列数据类型和大小必须与被引用的主键列一致。
- 在某些数据库中(如 MySQL 的 InnoDB 存储引擎),外键约束需要显式指定存储引擎支持。
- 如果表中已有数据,添加外键约束时需要确保数据符合外键关系,否则会报错。
解决方案
-- 在 audit 表上创建外键约束
ALTER TABLE audit
ADD CONSTRAINT fk_audit_emp_no
FOREIGN KEY (EMP_no)
REFERENCES employees_test (ID)
ON DELETE CASCADE
ON UPDATE CASCADE;
代码说明
-
ALTER TABLE 表名
:- 用于修改表结构。
-
ADD CONSTRAINT
:- 用于添加约束,此处添加的是外键约束。
-
外键名称:
fk_audit_emp_no
是外键约束的名称,可以根据需要自定义。
-
FOREIGN KEY (EMP_no)
:- 指定
audit
表中的EMP_no
列作为外键。
- 指定
-
REFERENCES employees_test (ID)
:- 指定外键引用的表和列,即
employees_test
表的ID
列。
- 指定外键引用的表和列,即
-
ON DELETE CASCADE
:- 当
employees_test
表中的记录被删除时,audit
表中对应的记录也会被级联删除。
- 当
-
ON UPDATE CASCADE
:- 当
employees_test
表中的ID
值被更新时,audit
表中对应的EMP_no
值也会被级联更新。
- 当