This constraint specifies that if any two rows are compared on the specified column(s) or expression(s) using the specified operator(s), at least one of these operator comparisons will return false or null. Let's look at this example:
CREATE EXTENSION btree_gist; CREATE TABLE example( name varchar, age integer, EXCLUDE USING gist (AGE WITH <>));
In the preceding example, we are enforcing that age has to match an already existing one. What happens if you try to insert a different age? Let's look at this example:
postgres=# INSERT INTO example VALUES ('scott', '26'); INSERT 0 1 postgres=# INSERT INTO example VALUES ('scott', '27'); ERROR: conflicting key value violates exclusion constraint "example_age_excl" DETAIL: Key (age)=(27) conflicts with existing key (age)=(26).
It throws an
ERROR that the exclusion constraint is violated. Adding an exclusion constraint will automatically create an index of the type specified in the constraint declaration.