【发布时间】:2016-05-20 06:11:10
【问题描述】:
当我在表上添加排除约束以防止两行在 int[] 中具有相同值时,我收到以下错误消息:
数据类型 integer[] 没有访问方法“gist”的默认运算符类
我有一张这样的桌子:
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)
);
【问题讨论】:
-
我到处看了看,似乎以前没有多少人尝试过。 PostgreSQL 的CREATE OPERATOR CLASS 手册页最后有一个示例,说明它似乎正是您所需要的(int[] 的 GIST 运算符类),但是它在我的服务器上失败了。也许你会有更好的运气!
-
谢谢 Ziggy,我也倒霉了
-
您当然可以通过使用带有
PRIMARY KEY的表来代替purchase_ids而不是int[]来非常简单地解决这个问题。你真的需要将数据存储在数组中吗? -
@Patrick 如果将数据存储在数组中,那就太好了。我的同事通过在排除约束中添加一个支持重叠操作的 intarray 扩展来解决这个问题。