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;

创建此扩展后,我可以添加排除约束以防止数组中的两行具有相同的元素。