¿Cómo especifico que una columna debe incrementarse automáticamente en pgAdmin?

14

Empecé a aprender pgAdmin III para administrar una base de datos PostgreSQL. Pero no fue una aplicación fácil de usar.

Si creo o he creado una tabla con pgAdmin III, ¿cómo puedo agregar la funcionalidad de "incremento automático" en una ID de columna que tiene un tipo entero?

Jonas
fuente

Respuestas:

17

dos opciones: Use el "datatype" SERIAL o cree una secuencia y use esta secuencia como valor predeterminado para su entero:

CREATE SEQUENCE your_seq;
CREATE TABLE foo(
  id int default nextval('your_seq'::regclass),
  other_column TEXT
);
INSERT INTO foo(other_column) VALUES ('bar') RETURNING *;
Frank Heikens
fuente
1
Esta respuesta podría actualizarse para incluirla GENERATED BY DEFAULT AS IDENTITYintroducida con Postgres> = 10.
Madbreaks
15

Si desea hacer esto en PGAdmin, es mucho más fácil que usar la línea de comando. Parece que en PostgreSQL, para agregar un incremento automático a una columna, primero necesitamos crear una secuencia de incremento automático y agregarla a la columna requerida. Me gustó esto.

1) En primer lugar, debe asegurarse de que haya una clave principal para su tabla. También mantenga el tipo de datos de la clave primaria en bigint o smallint. (Utilicé bigint, no pude encontrar un tipo de datos llamado serial como se menciona en otras respuestas en otro lugar)

2) Luego agregue una secuencia haciendo clic derecho en secuencia-> agregar nueva secuencia . Si no hay datos en la tabla, deje la secuencia como está, no realice ningún cambio. Solo guárdalo. Si hay datos existentes, agregue el último valor o el más alto en la columna de clave principal al valor Actual en la pestaña Definiciones como se muestra a continuación. ingrese la descripción de la imagen aquí

3) Finalmente, agregue la línea nextval('your_sequence_name'::regclass)al valor predeterminado en su clave principal como se muestra a continuación.

ingrese la descripción de la imagen aquí Asegúrese de que el nombre de la secuencia sea correcto aquí. Esto es todo y el incremento automático debería funcionar.

toing_toing
fuente
44
No estoy de acuerdo sobre el "más fácil en PgAdmin". ¿Crees que hacer clics es más fácil que simplemente hacer una columna SERIAL?
ypercubeᵀᴹ
1
Debo decir que es más fácil para aquellos que están acostumbrados a las GUI y si no están familiarizados con las líneas de comando. :)
toing_toing