| From: | Thomas Kellerer <spam_eater(at)gmx(dot)net> |
|---|---|
| To: | pgsql-general(at)postgresql(dot)org |
| Subject: | Re: Way to create unique constraint in Postgres even with null columns |
| Date: | 2011-11-27 21:47:48 |
| Message-ID: | jaub4g$rte$1@dough.gmane.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
Mike Christensen wrote on 27.11.2011 22:18:
> I have a table with this layout:
>
> CREATE TABLE Favorites
> (
> FavoriteId uuid NOT NULL, --Primary key
> UserId uuid NOT NULL,
> RecipeId uuid NOT NULL,
> MenuId uuid
> )
>
> I want to create a unique constraint similar to this:
>
> ALTER TABLE Favorites ADD CONSTRAINT Favorites_UniqueFavorite
> UNIQUE(UserId, MenuId, RecipeId);
>
> However, this will allow multiple rows with the same UserId and
> RecipeId, if the MenuId is null. I want to allow a NULL MenuId to
> store a favorite that has no associated menu, but I only want at most
> one of these rows per user/recipe pair.
In addition to the above unique constraint you will need another one:
CREATE UNIQUE INDEX Favorites_UniqueFavorite
ON (UserId, MenuId)
WHERE RecipeId IS NULL;
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Mike Christensen | 2011-11-27 22:02:23 | Re: Way to create unique constraint in Postgres even with null columns |
| Previous Message | Pavel Stehule | 2011-11-27 21:44:35 | Re: Way to create unique constraint in Postgres even with null columns |