Re: EXCLUDE constraint with not equals

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: Raw Message | Whole Thread | 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

In response to

Responses

Browse pgsql-general by date

  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