Equivalent to exclusion constraint composed of int

2019-01-26 23:33发布

问题:

I need to have something equivalent to this exclusion constraint

drop table if exists t;
create table t (
    i int,
    tsr tstzrange,
    exclude using gist (i with =, tsr with &&)
);
ERROR:  data type integer 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.

I guess the problem is obvious from the error message. How to do it?

回答1:

You need to install the additional module btree_gist to make it work. The module installs the missing operator class.

Details in this related answer:
Exclusion constraint on a bitstring column with bitwise AND operator

More at this answer on dba.SE:
PostgreSQL EXCLUDE USING error: Data type integer has no default operator class