postgresql types auto-increment ddl postgresql-9.3

postgresql - ¿Cómo convertir la clave primaria de entero a serial?



types auto-increment (1)

serial es un tipo de pseudo datos, no un tipo de datos real. Es un integer debajo con algunos comandos DDL adicionales que se ejecutan automáticamente:

  1. Cree una secuencia (con el nombre correspondiente de forma predeterminada).
  2. Establezca la columna NOT NULL y el valor predeterminado para dibujar a partir de esa secuencia.
  3. Haga que la columna "posea" la secuencia.

Detalles:

Un serial es lo mismo, construido alrededor de una columna bigint . Quieres bigint , pero ya lo has logrado. Para transformar una columna serial existente en una serie bigserial (o serie smallserial ), todo lo que necesita hacer es ALTER el tipo de datos de la columna. Las secuencias generalmente se basan en bigint , por lo que se puede usar la misma secuencia para cualquier tipo de integer .

Para "cambiar" un bigint a un bigserial o un integer a un serial , solo tiene que hacer el resto a mano:

El tipo de datos real sigue siendo integer / bigint . Algunos clientes como pgAdmin mostrarán el tipo de datos en serial en el script CREATE TABLE ingeniería inversa, si se cumplen todos los criterios para un serial .

En una tabla Postgres 9.3 tengo un integer como clave principal con secuencia automática para incrementar, pero he alcanzado el máximo para integer . ¿Cómo convertirlo de integer a serial ?
Lo intenté:

ALTER TABLE my_table ALTER COLUMN id SET DATA TYPE bigint;

Pero lo mismo no funciona con el tipo de datos serial lugar de bigint . Parece que no puedo convertir a serial ?