根据题目要求,我们需要在 audit 表上创建一个外键约束,使其 EMP_no 列引用 employees_test 表的主键 ID

知识点

1. 外键约束(Foreign Key Constraint)

  • 外键约束用于在两个表之间建立关联关系,确保数据的完整性。
  • 外键列的值必须是被引用表中主键列的值,或者为 NULL(如果允许)。

2. 级联操作(ON DELETE CASCADEON 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;

代码说明

  1. ALTER TABLE 表名

    • 用于修改表结构。
  2. ADD CONSTRAINT

    • 用于添加约束,此处添加的是外键约束。
  3. 外键名称

    • fk_audit_emp_no 是外键约束的名称,可以根据需要自定义。
  4. FOREIGN KEY (EMP_no)

    • 指定 audit 表中的 EMP_no 列作为外键。
  5. REFERENCES employees_test (ID)

    • 指定外键引用的表和列,即 employees_test 表的 ID 列。
  6. ON DELETE CASCADE

    • employees_test 表中的记录被删除时,audit 表中对应的记录也会被级联删除。
  7. ON UPDATE CASCADE

    • employees_test 表中的 ID 值被更新时,audit 表中对应的 EMP_no 值也会被级联更新。