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

Reply via email to