gpt4 book ai didi

postgresql - 两列之间唯一

转载 作者:行者123 更新时间:2023-11-29 12:17:03 24 4
gpt4 key购买 nike

假设 Postgresql >= 10,是否有办法限制表在两个(或更多)列中具有唯一值?也就是说,一个值只能出现在其中一列中。我想尽可能避免触发。对于微不足道的单个列。

让我们有这张表:

CREATE TABLE foo (
col1 INTEGER,
col2 INTEGER
);

应该是这样

1 2
4 3
5 7

虽然 8 4 是不可能的,因为已经有 4 3

到目前为止,我认为可以约束 EXCLUDE ((ARRAY[col1, col2]) WITH &&),但它似乎不受支持(还?):

ERROR:  operator &&(anyarray,anyarray) is not a member of operator family "array_ops"

这个要求也可以看作是一个空的内部连接表(on a.col1 = b.col2)。我想我可以使用触发器,但我想尽可能避免使用它们。

P. S. 这是 a related question .

最佳答案

我很漂亮 this answer非常接近您想要实现的目标,但正如答案中所述。没有真正的方法可以做到这一点,因为这不是常见的做法。在编程中,当发生这样的事情时,最好进行一些数据库重构以找到替代的、更理想的解决方案。希望对您有所帮助!

关于postgresql - 两列之间唯一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47865111/

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