添加约束

梗概

  • CREATE TABLE语句中用FOREIGN KEY短语定义哪些列为外码。
  • REFERENCES短语指明这些外码参照哪些表的主码。

实例

创建时添加约束

定义为列级约束条件:

CREATE TABLE SC
(
	column_name datatype FOREIGN KEY [该列名] REFERENCES table_name(column_name),
	column_name datatype,
	......
);
//定义列级参照完整性约束时,其中[该列名]可以省略

定义为表级约束条件:

CREATE TABLE SC
(
	column_name datatype,
	column_name datatype,
	......
	FOREIGN KEY(column_name,column_name) REFERENCES table_name(column_name)
);

附加参照完整性

ALTER TABLE table_name
ADD FOREIGN KEY (column_name)
REFERENCES table2_name(column_name);

违约处理方式

当某个操作会破坏参照完整性时,就要对其进行处理

  • 拒绝(NO ACTION)(默认)
  • 级联(cascade)修改引用项
    • 将引用了自己的其他元组一起修改
    • 如删除了被参照表S中学号为16001的学生,则系统会自动删除参照表SC中所有学号为16001的元组
  • 设置为空值(set null)断开引用
    • 将引用了自己的其他元组设为空值