Re: BUG #12991: RESTART IDENTITY is not doing anything
От | David G. Johnston |
---|---|
Тема | Re: BUG #12991: RESTART IDENTITY is not doing anything |
Дата | |
Msg-id | CAKFQuwaigg-sX_=3xALrba9E73sDK90RO6rbEcE9xpE_y18CQA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: BUG #12991: RESTART IDENTITY is not doing anything (Antoine Goutenoir <antoine@goutenoir.com>) |
Список | pgsql-bugs |
On Tue, Apr 7, 2015 at 12:06 PM, Antoine Goutenoir <antoine@goutenoir.com> wrote: > On Tue, Apr 7, 2015 at 5:02 PM, Andres Freund <andres@anarazel.de> wrote: > >> On 2015-04-07 04:07:56 +0000, antoine@goutenoir.com wrote: >> > Example, say Article has `id` as primary key : >> >> How is that table defined? Restart identity will only work if the >> sequence is 'owned' by the id column. That happens if you either create >> it by specifying 'serial' as the column type, or if you explicitly use >> ALTER SEQUENCE ... OWNED BY table.col; >> > > Oh, I created (actually, Doctrine created) those with : > > CREATE TABLE Article (id INT NOT NULL, name VARCHAR(16) NOT NULL, PRIMARY > KEY(id)); > CREATE SEQUENCE Article_id_seq INCREMENT BY 1 MINVALUE 1 START 1; > > Instead of : > > CREATE SEQUENCE Article_id_seq INCREMENT BY 1 MINVALUE 1 START 1 OWNED BY > Article.id; > > =E2=80=8BYou seem to be missing something here because the reported Doctrin= e code does nothing to change the Article.id field to use the sequence. Typically, you would do: CREATE TABLE Article (id serial) And the resultant column definition would include: [...] id integer DEFAULT =E2=80=8B =E2=80=8Bnextval('sequence_name_here')=E2=80=8B [...] =E2=80=8BThat particular code doesn't directly impact "Ownership"=E2=80=8B = though, which is strictly (I think) the mechanism by which RESTART works. David J.
В списке pgsql-bugs по дате отправления: