跳到主要内容

外键约束

什么是外键?​

  • 定义: 关系声明一个属性 (组) 为外键, 用它引用另一个关系的属性 (组);
  • 被引用方要求: 该属性 (组) 必须是 UNIQUE 或 PRIMARY KEY;
  • 引用完整性: 外键中的每个值都必须在被引用关系中出现;

怎样声明外键?​

  • 属性后声明:
CREATE TABLE Studio(
name CHAR(30) PRIMARY KEY,
address VARCHAR(255),
presC INT REFERENCES MovieExec(cert)
);
  • 单独声明:
CREATE TABLE Studio(
name CHAR(30) PRIMARY KEY,
address VARCHAR(255),
presC INT,
FOREIGN KEY (presC) REFERENCES MovieExec(cert)
);

被引用属性发生变化时外键怎样处理?​

策略行为
拒绝违法更新 (默认)破坏引用完整性的更新直接不执行
级联原则 CASCADE被引用属性的改变同步作用到对应外键上
置空值原则 SET NULL被引用属性改变时, 把受影响的外键值置为 NULL
CREATE TABLE Studio(
name CHAR(30) PRIMARY KEY,
address VARCHAR(255),
presC INT REFERENCES MovieExec(cert)
ON DELETE SET NULL
ON UPDATE CASCADE
);

(source: 060-约束和触发器.md §键和外键)