Re: removing "serial" from table definitions.

Поиск
Список
Период
Сортировка
От Johannes Paul
Тема Re: removing "serial" from table definitions.
Дата
Msg-id CAC5HKqDuK0JAx0Pc7UM8kgZ=Js4nWuS7A91nN61YKQuTL4sRFw@mail.gmail.com
обсуждение исходный текст
Ответ на removing "serial" from table definitions.  (Marc Mamin <M.Mamin@intershop.de>)
Список pgsql-general
From what I know, serial is just used to setup a table but it is then converted to int in the table. Therefore, you probably cannot remove it since it is not there any more anyway.

To setup table with int instead of serial, you could use this:

CREATE SEQUENCE table_name_id_seq;

CREATE TABLE table_name (
    id integer NOT NULL DEFAULT nextval('table_name_id_seq')
);

ALTER SEQUENCE table_name_id_seq
OWNED BY table_name.id;

instead of

CREATE TABLE table_name(
    id SERIAL
);

as explained on

Am Do., 24. Juni 2021 um 14:33 Uhr schrieb Marc Mamin <M.Mamin@intershop.de>:

Hi,

Is there  a way to change a data type from serial to int?

I tried with :

  ALTER TABLE "admin".db_jobs ALTER COLUMN id TYPE int USING id::int;

But this seems not to change anything, as if Posgres woud consider the statement as a no-op.

 

My problem is that "serial" is not exported with pg_dump.

Creating a db from the dump will hence result into a different table definition (which is equivalent tough)

 

We are trying a transfer/migration tool on Azure, that check the table definitions between the source and target before starting the data transfer, and it blocks on that difference.

 

best regards,

Marc Mamin

 

В списке pgsql-general по дате отправления:

Предыдущее
От: Marc Mamin
Дата:
Сообщение: removing "serial" from table definitions.
Следующее
От: Joe Conway
Дата:
Сообщение: Re: removing "serial" from table definitions.