Re: Best way to create unique primary keys across schemas?

From: Chris Angelico <rosuav(at)gmail(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: Best way to create unique primary keys across schemas?
Date: 2012-01-23 13:30:15
Message-ID: CAPTjJmpPO+_UoJd0bh+4f3dkZ-9agjb-J2rgS_VSbYiAPqp16A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Mon, Jan 23, 2012 at 11:19 AM, panam <panam(at)gmx(dot)net> wrote:
> Hi,
>
> If I'd like to have primary keys generated ("numeric" style, no UUIDs) that
> are unique across schemas is the best option to allocate a fixed sequence
> range (min,max) to the sequences of all schemas?

You can "share" a sequence object between several tables. This can
happen somewhat unexpectedly, as I found out to my surprise a while
ago:

CREATE TABLE tbl1 (ID serial primary key,foo varchar,bar varchar);
INSERT INTO tbl1 (foo,bar) VALUES ('asdf','qwer');
CREATE TABLE tbl2 LIKE tbl1 INCLUDING ALL;
INSERT INTO tbl2 (foo,bar) VALUES ('hello','world');

Both tables will be drawing IDs from the same sequence object, because
"create table like" copies the default value, not the "serial"
shorthand. (It makes perfect sense, it just surprised me that the IDs
were looking a little odd.)

Chris Angelico

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Hiroshi Saito 2012-01-23 13:43:18 Re: PGbouncer for Windows 2008
Previous Message Douglas Eric 2012-01-23 12:17:43 [RFE] auto ORDER BY for SELECT