【发布时间】:2012-10-15 04:24:19
【问题描述】:
使用 postgres sql,有没有办法在外键上设置一个条件,它像普通外键约束一样仅限于另一个表,但也允许 0 的值存在而不存在于另一个表中。例如:
table_a:
id
table_b:
id
foreign_key_on_table_a_id
table_a 将有一个事物列表,并且 table_b 与 table_a 相关,但具有外键约束。即使 table_a 中没有 0 的 id,我也希望它允许值为 0。
这是使用正确的约束吗?在不将值添加到 table_a 的情况下,是否有另一种/更好的方法?
【问题讨论】:
-
为什么不允许引用列中的 NULL 并使用 NULL 而不是零?哨兵值通常是个坏主意。
-
通常我会同意你的观点,但我正在与一家需要如上所述的外键约束的公司合作。相信我,如果我按照自己的方式行事,他们的工作将会彻底改革。
-
嗯,你可以把一个 NULL 放在一个被 FKed 到另一个表的 PK 的列中。
标签: postgresql