Resolviendo discrepancias de secuencia de clave primaria de PostgreSQL
Una secuencia de clave principal desalineada con las filas de su tabla puede causar errores de clave duplicados frustrantes. Esto a menudo sucede durante las importaciones de datos o restaura donde la integridad de la secuencia no se conserva. Aquí está cómo solucionarlo:
1. Encuentre la identificación más alta:
use la función max ()
para identificar la identificación más grande en su tabla:
SELECT MAX(id) FROM your_table;
2. Obtenga el siguiente valor de la secuencia:
Esta consulta muestra el siguiente valor generado de la secuencia:
SELECT nextval('your_table_id_seq');
3. Restablecer la secuencia (si es necesario):
Si el siguiente valor de la secuencia es menor que el ID máximo de la tabla, restablezca la secuencia dentro de una transacción para evitar insertos concurrentes:
BEGIN;
LOCK TABLE your_table IN EXCLUSIVE MODE;
SELECT setval('your_table_id_seq', (SELECT GREATEST(MAX(your_id), nextval('your_table_id_seq') - 1) FROM your_table));
COMMIT;
fuente: adaptado de una discusión del foro de Ruby.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3