两列
假设之间唯一的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是相当接近,你希望达到什么样的,但是,作为在答复中提到。没有真这样做的方式,因为它不是常见的做法。 在编程时,如果发生这种情况,最好是执行一些数据库重构来找到另一种更理想的解决方案。 希望有任何帮助!
以上是 两列 的全部内容, 来源链接: utcz.com/qa/261964.html