在什么条件下外键不能为空?

时间:2013-01-19 17:23:59

标签: mysql sql database rdms

  

可能重复:
  Nullable Foreign Key bad practice?

我知道外键用于关联或链接不同的表,但我的任务是询问主题的具体条件。

3 个答案:

答案 0 :(得分:1)

如果外键是子表中复合主键的一部分,则该外键不能为空。

tableA
id (int) PK

tableB
id (int) PK

tableAB
aId (int)
bId (int)
(aId, bId) PK

答案 1 :(得分:1)

FOREIGN KEY约束可以包含空值;但是,如果复合FOREIGN KEY约束的任何列包含空值,则会跳过对构成FOREIGN KEY约束的所有值的验证。要确保验证复合FOREIGN KEY约束的所有值,请在所有参与列上指定NOT NULL。

答案 2 :(得分:0)

由于链接实体和管理依赖关系的方式,一些ORM需要FK可以为空。