serial
es un pseudo tipo de datos, no un tipo de datos real. Es un integer
debajo con algunos comandos DDL adicionales ejecutados automáticamente:
- Cree una secuencia (con el mismo nombre de forma predeterminada).
- Establecer la columna
NOT NULL
y el valor predeterminado para dibujar a partir de esa secuencia. - Haga que la columna sea "dueña" de la secuencia.
Detalles:
- ¿Renombrar de forma segura y limpia las tablas que usan columnas de clave primaria serial en Postgres?
Una bigserial
es lo mismo, construido alrededor de un bigint
columna. Quieres bigint
, pero ya lo lograste. Para transformar un serial
existente columna en un bigserial
(o smallserial
), todo lo que necesitas 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 integer
tipo.
Para "cambiar" un bigint
en un bigserial
o un integer
en un serial
, solo tienes que hacer el resto a mano:
- Crear una secuencia de PostgreSQL en un campo (que no es el ID del registro)
El tipo de datos real sigue siendo integer
/ bigint
. Algunos clientes como pgAdmin mostrarán el tipo de datos serial
en la ingeniería inversa CREATE TABLE
script, si todos los criterios para un serial
se cumplen.