On 23/08/2011, at 13:31, Jasen Betts wrote:

> On 2011-08-23, Herouth Maoz <hero...@unicell.co.il> wrote:
> 
>>    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 =3D true. Is this exclude =
>> constraint correct?
> 
> I don't really understand exclude, but instead of EXCLUDE... I would do
> 
> CREATE UNIQUE INDEX "invoice_definitions-unique-default" 
>  ON invoice_definitions(customer_id) WHERE is_default;
> 
> Which would create a smaller (and probably faster) BTREE index 
> containing only the rows with is_default true.

This is an interesting concept.  It's a different angle on the same condition.

> 
> There seems to be no way to create this in the create-table 
> command. (using 8.4 here)

Yes, it's curious that exclude constraints are the only ones which are allowed 
to be partial in a table definition.

Thank you.

Herouth
-- 
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql

Reply via email to