所有记录中数组列类型的唯一性

hum*_*ins 5 postgresql array

这里有张桌子

id serial primary key,
names varchar(20)[]
Run Code Online (Sandbox Code Playgroud)

它包含这样的记录

1, {"one", "two", "three"}
Run Code Online (Sandbox Code Playgroud)

然后,插入下一条记录(注意one数组元素已存在于现有记录中)

2, {"four", "one"}
Run Code Online (Sandbox Code Playgroud)

或者通过向数组添加一个元素来更新现有记录,但此类字符串元素已在其他记录中使用。

是否可以创建一个唯一的约束,不允许在所有行中全局重复数组内的元素,而不仅仅是在数组值本身内?

小智 0

您可以使用另一个具有复合 PK 的表(其中每一行都是一个 ID 和一个名称)来实现此目的,但使用 ARRAY 是不可能的。