gpt4 book ai didi

带条件的 PostgreSQL 外键

转载 作者:行者123 更新时间:2023-11-29 13:05:47 25 4
gpt4 key购买 nike

使用 postgres sql,有没有一种方法可以在外键上设置条件,使其像普通外键约束一样限制在另一个表中,但也允许 0 值存在而不存在于另一个表中。例如:

table_a:
id

table_b:
id
foreign_key_on_table_a_id

table_a 会有一个列表,table_b 与 table_a 相关,但有外键约束。我也希望它允许值为 0,即使 table_a 中没有 id 0。

这是正确的使用约束吗?是否有另一种/更好的方法可以在不将值添加到 table_a 的情况下执行此操作?

最佳答案

我会更改 foreign_key_on_table_a_id 以允许 NULL 值。然后像往常一样使用 FK 并将 NULL 放在那里而不是零。您可以在引用另一个表的列中使用 NULL。

或者,您可以编写一个函数,如果值在另一个表中则返回 true,否则返回 false,然后添加一个 CHECK 约束:

CHECK (your_column = 0 or the_function(your_column))

尽管如此,您不会获得 FK 的任何常见级联行为,而且此 CHECK 是一个巨大的困惑。

关于带条件的 PostgreSQL 外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13060912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com