数据库 - ForeignKey (外键)

创建时间:
2017-03-07 19:56
最近更新:
2018-10-16 18:28

Resource - microsoft.com

Note: 外键约束 并不仅仅可以与另一表的 主键约束 相链接,它还可以定义为引用另一表的 唯一约束。

  1. 主键和外键约束
  2. FOREIGN KEY 约束 - 外键约束 并不仅仅可以与另一表的 主键约束 相链接,它还可以定义为引用另一表的 唯一约束。
  3. 创建外键关系 - 外键约束 并不仅仅可以与另一表的 主键约束 相链接,它还可以定义为引用另一表的 唯一约束。外键约束 可引用同一表中的其他列。此行为称为自引用

Resource

  1. 数据库中是否需要建外键
  2. 大家设计数据库时使用外键吗

网摘

  1. 外键字段 与 被引用字段 属性相同、取值范围相同。
  2. 被引用字段 上有 主键约束 或者 唯一约束;
  3. 外键可以是多个字段的组合。

书摘

外键 是 子表里的一个字段,引用 父表里的 主键。
外键约束 是 确保表与表之间 引用完整性的 主要机制。
一个被定义为外键的字段 用于引用 另一个表里的主键。

外键 定义在/创建在 子表 中,是 子表 中的一个 字段
外建 引用了 主表 的 主键字段。
外键 确保了 子表的外键列里的每一个值 都 在主表的主键列里 有对应的值。
这被称为 父/子关系,其中:
父表 是 主键所在的表;
子表 是 外键所在的表。

要插入 子表的外键列的 每一个值,它首先要存在于 父表的主键列 里,类似地,父表里删除一个主键的记录,子表里相应的外键记录必须全部被删除。这就是 引用完整性 的概含。

-- 《SQL入门经典_第四版_扫描版.pdf》 P38 "3.4.3 外键约束"

Note: 以上书摘,只说 "主键" 是错误的,应改为 "主键约束 与 唯一约束 的 字段"。

Microsoft SQL Server 2008 列出所有外键

select name, is_disabled from sys.foreign_keys order by name;

sys.foreign_keys 是 sql server 2005 开始才有的系统视图,在 sql server 2000 里面没有,但可以用 2000 的系统表 dbo.sysconstraints

-- SQL 2000 sys.foreign_keys 无效错误 (sql2000 添加外键判断)