Saltar al contenido

Cómo agregar un primario de incremento automático key a una tabla existente, en PostgreSQL?

Hola, tenemos la solución a lo que buscas, continúa leyendo y la hallarás a continuación.

Solución:

(Actualizado – Gracias a las personas que comentaron)

Versiones modernas de PostgreSQL

Supongamos que tiene una tabla llamada test1al que desea agregar un elemento primario de incremento automático.key id columna (sustituto). El siguiente comando debería ser suficiente en versiones recientes de PostgreSQL:

   ALTER TABLE test1 ADD COLUMN id SERIAL PRIMARY KEY;

Versiones anteriores de PostgreSQL

En versiones antiguas de PostgreSQL (¿anteriores a 8.x?) tenías que hacer todo el trabajo sucio. La siguiente secuencia de comandos debería hacer el truco:

  ALTER TABLE test1 ADD COLUMN id INTEGER;
  CREATE SEQUENCE test_id_seq OWNED BY test1.id;
  ALTER TABLE test ALTER COLUMN id SET DEFAULT nextval('test_id_seq');
  UPDATE test1 SET id = nextval('test_id_seq');

Nuevamente, en las versiones recientes de Postgres esto es más o menos equivalente al comando anterior.

ALTER TABLE test1 ADD COLUMN id SERIAL PRIMARY KEY;

Esto es todo lo que necesitas para:

  1. Añade el id columna
  2. Rellénelo con una secuencia de 1 a contar
  3. . key Establecerlo como principal null/ no

.

Se le da crédito a @resnyanskiy quien dio esta respuesta en un comentario.

ALTER TABLE test 
ADD COLUMN id  bigint 
GENERATED  BY DEFAULT  AS IDENTITY PRIMARY KEY;

Para usar una columna de identidad en v10,

Para obtener una explicación de las columnas de identidad, consulte https://blog.2ndquadrant.com/postgresql-10-identity-columns/.

Para conocer la diferencia entre GENERADO POR DEFECTO y GENERADO SIEMPRE, consulte https://www.cybertec-postgresql.com/en/sequences-gains-and-pitfalls/.

Para modificar la secuencia, consulte https://popsql.io/learn-sql/postgresql/how-to-alter-sequence-in-postgresql/.

Aquí puedes ver las reseñas y valoraciones de los lectores

Si haces scroll puedes encontrar los informes de otros programadores, tú de igual manera puedes insertar el tuyo si dominas el tema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *