Weird unique constraint - Mailing list pgsql-general

From Mike Christensen
Subject Weird unique constraint
Date
Msg-id AANLkTikFg5LBTtV3jguc9TdhRqPKEsRfObBXiovsqzTi@mail.gmail.com
Whole thread Raw
Responses Re: Weird unique constraint  (Thom Brown <thombrown@gmail.com>)
Re: Weird unique constraint  (Thom Brown <thom@linux.com>)
Re: Weird unique constraint  ("A. Kretschmer" <andreas.kretschmer@schollglas.com>)
List pgsql-general
I have the following constraint which almost works:

ALTER TABLE ingredientforms ADD CONSTRAINT
ingredientforms_UniqueIngredientForm UNIQUE(IngredientId,
FormDisplayName);

However, I want to allow rows that have the same IngredientId
FormDisplayName /iff/ FormDisplayName is null.  If FormDisplayName is
not null, then it must be unique.

1, NULL
1, NULL

Would be allowed.

1, 'Foo'
1, 'Foo'

would violate the constraint.

1, 'Foo'
1, 'Bar'

would be allowed.

Any way to do this?  Insert performance is not an issue since the
table is almost never changed..

Mike

pgsql-general by date:

Previous
From: "A. Kretschmer"
Date:
Subject: Re: Pulling data from a constraint def
Next
From: Thom Brown
Date:
Subject: Re: Weird unique constraint