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:
- Cree una secuencia (con el nombre correspondiente de forma predeterminada).
-
Establezca la columna
NOT NULL
y el valor predeterminado para dibujar a partir de esa secuencia. - 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
?