sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo convertir la clave principal de entero a serie?

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:

  1. Cree una secuencia (con el mismo nombre de forma predeterminada).
  2. Establecer la columna NOT NULL y el valor predeterminado para dibujar a partir de esa secuencia.
  3. 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.