| From: | Thomas Kellerer <spam_eater(at)gmx(dot)net> |
|---|---|
| To: | pgsql-general(at)postgresql(dot)org |
| Subject: | Re: EXCLUDE constraint with not equals |
| Date: | 2015-02-10 07:14:25 |
| Message-ID: | mbcb4h$c5j$1@ger.gmane.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
Kai Groner schrieb am 10.02.2015 um 01:38:
> Given the following table, I would like to ensure that all the rows for an email that have a user defined map to the same user.
>
> CREATE TABLE person (
> id INTEGER PRIMARY KEY,
> user TEXT,
> email TEXT NOT NULL);
>
>
> What I think I'm looking for is something like this:
>
> CREATE TABLE person (
> id INTEGER PRIMARY KEY,
> user TEXT,
> email TEXT NOT NULL,
> EXCLUDE (email WITH =, user WITH <>)
> WHERE (user IS NOT NULL));
>
> The not equals comparison isn't supported, but it would be useful here.
>
> Is there another way to do this, short of creating a separate table that associates email and user?
A partial unique index on (user, email) should do:
create unique index on person (email, user)
where user is not null;
Thomas
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Andres Freund | 2015-02-10 08:57:34 | Re: Logical Decoding Callbacks |
| Previous Message | Michael Paquier | 2015-02-10 02:01:08 | Re: Logical Decoding Callbacks |