【问题标题】:Do foreign key columns in child table have to be NOT NULL?子表中的外键列是否必须为 NOT NULL?
【发布时间】:2021-10-13 08:07:30
【问题描述】:

我使用列组合作为主键并在子表中引用该主键。既然是多列的组合,那么子表中的所有列是否都需要用NOT NULL约束来定义?

例如,假设header 有一个主键,主键是 A、B 和 C 列的散列函数,line 表有一个外键,外键是 A、B 和 C 列的散列函数。 那么子表中的A、B、C列是不是必须不为NULL呢?

【问题讨论】:

    标签: postgresql foreign-keys constraints


    【解决方案1】:

    您应该咨询documentation

    通常,如果引用行的任何引用列为空,则引用行不需要满足外键约束。如果将 MATCH FULL 添加到外键声明中,则仅当引用行的所有引用列都为 null 时,引用行才会满足约束(因此保证 null 和非 null 值的混合会导致 MATCH FULL 约束失败)。如果您不希望引用行能够避免满足外键约束,请将引用列声明为 NOT NULL。

    也就是说,这是您可以做出的选择,具体取决于您允许或不想允许的操作。

    【讨论】:

      猜你喜欢
      • 2021-05-13
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      • 2012-04-30
      • 2010-11-24
      • 2011-09-08
      • 1970-01-01
      • 2016-05-09
      相关资源
      最近更新 更多