Actualizar secuencias masivas en Postgresql

Hola,

Este pequeño Query nos ayudará cuando alguien realiza movimientos en la base de datos y queremos asegurarnos de que las secuencias queden actualizadas:

SELECT 'SELECT setval(''' || table_name || '_' || column_name || '_' || 'seq'', COALESCE((SELECT MAX(' || column_name || ')+1 FROM ' || table_name || '), 1), FALSE);'
FROM information_schema.key_column_usage
WHERE constraint_name LIKE '%pkey%'
ORDER BY table_name

En caso de que el nombre de la secuencia sea personalizado se debe ajustar en el  setval.

Saludos y siempre piensen en ser mas productivos.

 

1 Comentarios

  • Excelente la sql muchas gracias. Incluí el esquema en el caso de que las tablas no estan en el public. SELECT ‘SELECT setval(»’ || table_schema||’.’|| table_name || ‘_’ || column_name || ‘_’ || ‘seq», COALESCE((SELECT MAX(‘ || column_name || ‘)+1 FROM ‘ || table_schema||’.’||table_name || ‘), 1), FALSE);’
    FROM information_schema.key_column_usage
    WHERE constraint_name LIKE ‘%pkey%’
    ORDER BY table_name

Deja una respuesta

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