外键(Foreign Key)约束。

通俗的说,外键是对另一个表中主键的引用。 如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键(FK)。即,当一张二维表(如表A)的主关键字被包含在另一张二维表(如表B)中时,A表中的主关键字便成为B表的外关键字。

外键的作用:

保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值!

用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。

FOREIGN KEY 约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。当更新主键的列值时,与之相关联的外键的列值也将被做相同的更新。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束值相关,则该操作不可实现。若要成功更改或删除 FOREIGN KEY 约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。

外键是用来控制数据库中数据的数据完整性的,就是当你对一个表的数据进行操作和他有关联的一个或更多表的数据能够同时发生改变。这就是外键的作用

注意事

·如果在 FOREIGN KEY 约束的列中输入非 NULL值,则此值必须在被引用的列中存在,否则将返回违反外键约束的错误信息。

·FOREIGN KEY 约束应用于前面所讲的列,除非指定了源列。

·FOREIGN KEY 约束仅能引用位于同一服务器上的同一数据库中的表。数据库间的引用完整性必须通过触发器实现。有关更多信息,请参见CREATE TRIGGER

·FOREIGN KEY 可以引用同一表中的其它列(自引用)

·列级 FOREIGN KEY 约束的 REFERENCES子句仅能列出一个引用列,且该列必须与定义约束的列具有相同的数据类型。

·表级 FOREIGN KEY 约束的 REFERENCES子句中引用列的数目必须与约束列列表中的列数相同。每个引用列的数据类型也必须与列表中相应列的数据类型相同。

·如果 timestamp类型的列是外键或被引用键的一部分,则不能指定 CASCADE

·可以在相互间具有引用关系的表上组合使用 CASCADE NO ACTION。如果 SQL Server遇到 NO ACTION,将终止执行语句并回滚相关的 CASCADE操作。当 DELETE 语句导致 CASCADE NO ACTION 组合操作时,在 SQL Server检查 NO ACTION 操作之前将执行所有 CASCADE操作。

·一个表最多可包含 253 FOREIGN KEY约束。

·对于临时表不强制 FOREIGN KEY 约束。

·每个表在其 FOREIGN KEY 约束中最多可以引用 253个不同的表。

·FOREIGN KEY 约束只能引用被引用表的 PRIMARY KEY UNIQUE 约束中的列或被引用表上 UNIQUE INDEX中的列。

使用:

[CONSTRAINT constraint_name][FOREIGN KEY] REFERENCES ref_table[(ref_column)][ON DELETE{cascade(级联)|no action(无操作)|set null(设置空)|set default(设置默认值) }] [ON UPDATE{cascade|no action|set null|set default }]

References:指定要建立关联的表的信息

Ref_table:指定要建立关联表的名称

Ref_column:指定要建立关联表中的相关联的列的名称。

外键(Foreign Key)约束。