Re: Help with exclusion constraint - Mailing list pgsql-general

From Igor Neyman
Subject Re: Help with exclusion constraint
Date
Msg-id A76B25F2823E954C9E45E32FA49D70EC7A9C30FA@mail.corp.perceptron.com
Whole thread Raw
In response to Help with exclusion constraint  (Moshe Jacobson <moshe@neadwerx.com>)
Responses Re: Help with exclusion constraint  (Moshe Jacobson <moshe@neadwerx.com>)
List pgsql-general

From: pgsql-general-owner@postgresql.org [mailto:pgsql-general-owner@postgresql.org] On Behalf Of Moshe Jacobson
Sent: Friday, March 28, 2014 10:31 AM
To: pgsql-general
Subject: [GENERAL] Help with exclusion constraint

Take the following table:
CREATE TABLE exclusion_example AS
(
     pk_col  integer primary key,
     fk_col integer not null references other_table,
     bool_col boolean not null
);
I want to ensure that for any given value of fk_col that there is a maximum of one row with bool_col = true. I wanted
towrite an exclusion constraint such as this: 
alter table exclusion_example add exclude using btree ( fk_col with = , bool_col with and );
..........................
..........................
..........................
Moshe Jacobson
Manager of Systems Engineering, Nead Werx Inc.
2323 Cumberland Parkway * Suite 201 * Atlanta, GA 30339
"Quality is not an act, it is a habit." - Aristotle

For this:

"any given value of fk_col that there is a maximum of one row with bool_col = true."

why don't you (instead) create partial unique index:

CREATE UNIQUE INDEX on exclusion_example(fk_col, bool_col) WHERE bool_col IS TRUE;

Regards,
Igor Neyman


pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: The result of the last function call overwrites the result of previous function calls
Next
From: hari.fuchs@gmail.com
Date:
Subject: Re: Help with exclusion constraint