"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo restablecer la secuencia de clave primaria de Postgres fuera de sincronización con filas de tabla?

¿Cómo restablecer la secuencia de clave primaria de Postgres fuera de sincronización con filas de tabla?

Publicado el 2025-04-17
Navegar:689

How Can I Reset a Postgres Primary Key Sequence Out of Sync with Table Rows?

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.

Último tutorial Más>

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