导读 大家好,小俊来为大家解答以上问题。外键约束怎么设置,外键约束很多人还不知道,现在让我们一起来看看吧!外键约束用于建立两个表之间的关

大家好,小俊来为大家解答以上问题。外键约束怎么设置,外键约束很多人还不知道,现在让我们一起来看看吧!

外键约束用于建立两个表之间的关系,需要指定哪个列引用主表。

外键约束这样检查子表:

对子表的INSERT和UPDATE操作的限制是必须匹配主表中的主键值或者为NULL,否则不允许。

像这样检查外键约束的父表:

对父表_的UPDATE和DELETE操作的限制取决于定义子表外键时指定的ONUPDATE和ONDELETE子句(不同的DBMS支持不同的情况)。ONDELETE子句中每个选项的功能:

1.无操作:删除主表中的记录。如果子表中有与主表匹配的记录,则不允许(会产生错误提示)。这是默认操作(系统自动采取的操作,无需指定ONDELETE子句)。

2.CASCADE (Cascade) 3360删除主表中的记录也会删除子表中匹配的记录。

3.SETNULL:删除主表记录,并将子表中匹配记录的外键值改为NULL。

4.SETDEFAULT:删除主表中的记录,并将子表中匹配记录的外键值改为默认值。ONUPDATE子句中每个选项的作用。

扩展数据

外键的目的是确保数据的完整性。它通常包括以下内容:

1.实体完整性,以确保每个实体都是唯一的(由主键实现)

2.域完整性,确保属性值只从一组特定的可选集中选择。

3.关联的完整性,以确保每个外键要么为空(如果允许的话),要么包含一个与相关主键值匹配的值。

约束的主要目的是控制外键表中存储的数据,但它也可以控制主键表中数据的修改。例如,如果从publishers表中删除了一个出版商,并且该出版商的ID用于记录titles表中的图书信息。

那么这两个表之间的关系的完整性将被破坏,并且出版商在titles表中的图书将变得孤立,因为与publishers表中的数据没有链接。

外键约束阻止了这种情况的发生。如果主键表中数据的改变使与外键表中数据的链接失效,则不能实现这种改变,从而保证参照完整性。

如果试图删除主键表中的一行或更改与另一个表的外键约束值相关的主键值,则此操作是不可能的。

若要成功更改或删除外键约束的行,可以首先删除或更改外键表中的外键数据,然后将外键链接到不同的主键数据。

参考来源:搜狗百科-外键

来源:搜狗百科-约束

本文到此结束,希望对大家有所帮助。