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

Columna de tabla de incremento automático

Postgres 10 o posterior

serial Las columnas (ver más abajo) permanecen sin cambios. Pero considere una IDENTITY columna. Postgres 10 implementa esta característica de SQL estándar.

Sintaxis básica e información en el manual para CREATE TABLE .
Explicación detallada en esta entrada de blog de su autor principal Peter Eisentraut.

Crear tabla con IDENTITY columna

CREATE TABLE staff (
   staff_id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY
 , staff    text NOT NULL
);

Agregar IDENTITY columna a la tabla existente

La tabla puede o no estar llena de filas.

ALTER TABLE staff ADD COLUMN staff_id int GENERATED BY DEFAULT AS IDENTITY;

Para convertirlo también en el PK al mismo tiempo (la tabla aún no puede tener un PK):

ALTER TABLE staff ADD COLUMN staff_id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY;

Relacionado:

  • ¿Cómo agregar una columna de identidad de PostgreSQL 10 a una tabla existente con filas?

Reemplazar serial con IDENTITY columna

Ver:

  • ¿Cómo cambiar el ID de una tabla de serie a identidad?

Postgres 9.6 o anterior

(O cualquier versión, en realidad).
Use el serial pseudo tipo de datos en su lugar:

CREATE TABLE staff (
   staff_id serial PRIMARY KEY,
 , staff    text NOT NULL
);

Crea y adjunta el objeto de secuencia automáticamente y establece el DEFAULT a nextval() de la secuencia. Hace todo lo que necesitas.

Usé identificadores en minúsculas en mi ejemplo. Hace su vida más fácil con Postgres.