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.