¿Cómo establecer el incremento automático de la clave primaria en PostgreSQL?
Tengo una tabla en PostgreSQL con 22 columnas, y quiero añadir una clave primaria auto incrementable.
Traté de crear una columna llamada id
de tipo BIGSERIAL pero pgadmin respondió con un error:
idioma: lang-none -->
ERROR: sequence must have same owner as table it is linked to.
¿Alguien sabe cómo solucionar este problema? ¿Cómo puedo añadir una clave primaria autoincrementable en PostgreSQL sin volver a crear la tabla?
251
3
Prueba este comando:
Pruébalo con el mismo usuario de la BD con el que has creado la tabla.
Incremento automático de la clave primaria en postgresql:
Paso 1, crear la tabla:
Paso 2, inserte los valores en su tabla así, observe que no se especifica mytable_key en la primera lista de parámetros, esto hace que la secuencia por defecto se autoincremente.
*Paso 3, seleccione de su tabla:**
Paso 4, interpretar la salida:
Observa que la columna mytable_key se ha autoincrementado.
Consejo de experto:
Usted siempre debe utilizar una clave primaria en su tabla porque postgresql internamente utiliza estructuras de tabla hash para aumentar la velocidad de inserciones, eliminaciones, actualizaciones y selecciones. Si se dispone de una columna de clave primaria (que es única y no nula), se puede confiar en ella para proporcionar una semilla única para la función hash. Si no se dispone de una columna de clave primaria, la función hash se vuelve ineficiente, ya que selecciona algún otro conjunto de columnas como clave.
Crear una clave primaria autoincrementada en postgresql, utilizando una secuencia personalizada:
Paso 1, crear su secuencia:
Paso 2, crea tu tabla
Paso 3, inserte en su tabla
Paso 4, observar las filas
Las dos filas tienen claves que comienzan en 1 y se incrementan en 1, según lo definido por la secuencia.
Bonus Elite ProTip:
Los programadores odian escribir, y escribir el
nextval('splog_adfarm_seq')
es molesto. Puedes escribirDEFAULT
para ese parámetro en su lugar, así:Para que lo anterior funcione, tienes que definir un valor por defecto para esa columna clave en la tabla splog_adfarm. Lo cual es más bonito.