两列

假设之间唯一的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

回到顶部