My thanks to everyone who replied. I have decided not to implement that constraint at this time. Using a compound type will make the system more complicated and less readable, plus requires installing the package which is beyond vanilla PostgreSQL.
Now I have another exclusion constraint I'm thinking about in another and I want to verify that this will do what I mean it to do: CREATE TABLE invoice_definitions ( id SERIAL PRIMARY KEY NOT NULL, customer_id INTEGER NOT NULL REFERENCES customers(id), is_default BOOLEAN NOT NULL DEFAULT FALSE, bill_description VARCHAR(100) NOT NULL, itemized_description VARCHAR(100) NOT NULL, EXCLUDE USING GIST ( customer_id WITH =, is_default WITH AND ) ) ; Basically, each customer can have several rows in this table, but only one per customer is allowed to have is_default = true. Is this exclude constraint correct? TIA, Herouth