setval serial secuencia postgres español desde change cero cannot aprender actualizar sql postgresql sequences

serial - ¿Cómo actualizar valores únicos en SQL usando una secuencia de PostgreSQL?



postgresql sequence nextval (2)

No use una subselección, más bien use la función nextval directamente, como esta:

update person set unique_number = nextval(''number_sequence'');

En SQL, ¿cómo se actualiza una tabla, estableciendo una columna con un valor diferente para cada fila?

Quiero actualizar algunas filas en una base de datos PostgreSQL, estableciendo una columna en un número de una secuencia, donde esa columna tiene una restricción única. Esperaba poder usar:

update person set unique_number = (select nextval(''number_sequence'') );

pero parece que nextval solo se llama una vez, por lo que la actualización usa el mismo número para cada fila, y aparece un error de "clave duplicada que viola la restricción única". ¿Qué debería hacer?


Considero que las secuencias de pg son un truco y las señales de que los enteros incrementales no son la mejor manera para las filas clave. Aunque pgsql no obtuvo soporte nativo para UUID hasta el 8.3

http://www.postgresql.org/docs/8.3/interactive/datatype-uuid.html

Los beneficios de UUID es que la combinación es casi infinita, a diferencia de un número aleatorio que chocará un día.