Re: Migration problem - serial fields
От | Stephan Szabo |
---|---|
Тема | Re: Migration problem - serial fields |
Дата | |
Msg-id | 20020307073449.E76547-100000@megazone23.bigpanda.com обсуждение исходный текст |
Ответ на | Migration problem - serial fields ("Rick Anderson" <rick@planetdigital.com>) |
Список | pgsql-general |
On Mon, 4 Mar 2002, Rick Anderson wrote: > The snag I'm encountering is with Identity fields in SQL7. I discovered the > equivalent in PG -- sequences/serial field. I would like to use serial if > possible, but here's the problem: getting the existing records over while > *keeping the existing values* for the Identity/sequence ID fields. They > actually transfer over fine, but the next insert into the PG table > generates a duplicate ID error. It seems obvious that my transfer did not > update the sequence used by the serial field. However, I'm just not sure of > the best course of action. Yes, the sequence is only updated if a value is not given (it's effectively just a default so nextval doesn't get called otherwise) > I've thought about the following as solutions: > > 1. Do the transfer, put values into the serial field, then find the highest > value and manually set the sequence somehow to start from highest+1 (seed > value). I don't know if this means moving away from serial field to a This is probably the easiest. setval('<seq name>', highest value) should be okay. IIRC this is what pg_dump does. > "nextval of sequence" approach. I understand there is a problem with orphan > sequences with serial fields if you drop tables, so maybe I shouldn't use > serials anyway. It's just a thing to remember when you drop the table. You run into similar problems with standalone sequences anyway.
В списке pgsql-general по дате отправления: