cuando se borra todos los registros de una tabla de PostgreSQL y luego tratar de restablecer la secuencia para iniciar un nuevo registro con el número 1 cuando se inserta, i obtener resultados diferentes:secuencias Postgresql
SELECT setval('tblname_id_seq', (SELECT COALESCE(MAX(id),1) FROM tblname));
Esto establece la corriente valor de la secuencia a 1, pero el registro NEXT (en realidad el primero porque todavía no hay registros) obtiene el número 2!
Y no puedo configurarlo en 0, porque el valor mínimo en la secuencia es 1!
Cuando uso:
ALTER SEQUENCE tblname_id_seq RESTART WITH 1;
el primer registro que se inserta en realidad recibe el número 1! Pero el código anterior no acepta un SELECT como un valor en lugar de 1.
Deseo restablecer la secuencia al número 1 cuando no hay registros, y el primer registro debe comenzar con 1. Pero cuando HAY ya los registros en la tabla, quiero restablecer la secuencia para que el siguiente registro que se inserta obtendrá {más alto} +1
¿Alguien tiene una solución clara para esto?
Y use 'COALESCE (MAX (id), 0) + 1' –
Sí, o de lo contrario la próxima identificación colisionará con MAX (id). – araqnid
Genial, funciona ahora, gracias ... Miré ese parámetro, pero no funcionó cuando lo probé. Debo haber hecho algo mal ... – Dylan