Re: Unique constraint on field inside composite type. - Mailing list pgsql-general

From Adrian Klaver
Subject Re: Unique constraint on field inside composite type.
Date
Msg-id bcfd250f-d5e7-99e8-e76a-a0e77a646679@aklaver.com
Whole thread Raw
In response to Re: Unique constraint on field inside composite type.  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-general
On 08/22/2016 06:23 PM, Tom Lane wrote:
> Adrian Klaver <adrian.klaver@aklaver.com> writes:
>> On 08/17/2016 11:02 PM, Silk Parrot wrote:
>>> CREATE TABLE user (
>>> uuid UUID PRIMARY KEY DEFAULT public.uuid_generate_v4(),
>>> google_user system.google_user,
>>> facebook_user system.facebook_user,
>>> UNIQUE (google_user.email)
>>> );
>>> ERROR:  syntax error at or near "."
>>> LINE 10:     UNIQUE (google_user.email)
>>>
>>> Is there a way to create unique constraint on a field inside composite type?
>
>> I tried David's suggestion:
>> (google_user).email
>> and that did not work, but it got me to thinking, so:
>
> You'd need additional parens around the whole thing, like
>
> create unique index on "user"(((google_user).email));

Aah, I did not bury it deep enough, my attempt:

create unique index g_u on  test_user ((google_user).email));

>
> The UNIQUE-constraint syntax will never work, because per SQL standard
> such constraints can only name simple columns.  But you can make
> a unique index separately.
>
>             regards, tom lane
>


--
Adrian Klaver
adrian.klaver@aklaver.com


pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: Permissions pg_dump / import
Next
From: Jerome Wagner
Date:
Subject: question on error during COPY FROM