Postgresql

ENUM 錯誤的排除約束:數據類型 dow 沒有訪問方法“gist”的預設運算符類

  • February 10, 2019

按照this 的風格,我正在嘗試在 ENUM 上創建排除約束,

CREATE TYPE dow AS ENUM (
 'Monday', 'Tuesday', 'Wednesday', 'Thursday',
 'Friday', 'Saturday', 'Sunday'
);

CREATE TABLE available (
 dow      dow,
 tsrange  tsrange,
 EXCLUDE USING gist (tsrange WITH =, dow WITH &&)
);

退貨

ERROR:  data type dow has no default operator class for access method "gist"
HINT:  You must specify an operator class for the index or define a default operator class for the data type.

這顯然是一個已知問題,它已在 PostgreSQL 10 中修復。btree_gist(10+)的新版本在 docs中,

btree_gist 提供 GiST 索引操作符類,這些操作符類為 int2、int4、int8、float4、float8、數字、帶時區的時間戳、不帶時區的時間戳、帶時區的時間、不帶時區的時間、日期的數據類型實現 B 樹等效行為、interval、oid、money、char、varchar、text、bytea、bit、varbit、macaddr、macaddr8、inet、cidr、uuid和所有列舉類型。

引用自:https://dba.stackexchange.com/questions/201554