postgresql 如何在整数数组上创建排除约束以防止数组值重叠?
postgresql how to create a exclude constraint on integer array to prevent array value overlap?
当我在 table 上添加排除约束以防止两行在 int[] 中具有相同的值时,我收到此错误消息:
data type integer[] has no default operator class for access method "gist"
我有一个 table 这样的:
CREATE TABLE x (
id SERIAL PRIMARY KEY,
ref_id INT REFERENCES x,
purchase_ids INT[],
EXCLUDE USING GIST(purchase_ids WITH &&) WHERE(ref_id IS NULL)
);
我的同事通过创建扩展解决了这个问题:
CREATE EXTENSION IF NOT EXISTS intarray;
创建此扩展后,我可以添加排除约束以防止数组中的两行具有相同的元素。
当我在 table 上添加排除约束以防止两行在 int[] 中具有相同的值时,我收到此错误消息:
data type integer[] has no default operator class for access method "gist"
我有一个 table 这样的:
CREATE TABLE x (
id SERIAL PRIMARY KEY,
ref_id INT REFERENCES x,
purchase_ids INT[],
EXCLUDE USING GIST(purchase_ids WITH &&) WHERE(ref_id IS NULL)
);
我的同事通过创建扩展解决了这个问题:
CREATE EXTENSION IF NOT EXISTS intarray;
创建此扩展后,我可以添加排除约束以防止数组中的两行具有相同的元素。