En SQL, ¿cómo se actualiza una tabla, estableciendo una columna con un valor diferente para cada fila?¿Cómo actualizar valores únicos en SQL usando una secuencia de PostgreSQL?
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. Tenía la esperanza de que así que podría utilizar:
update person set unique_number = (select nextval('number_sequence'));
pero parece que nextval sólo se le llama una vez, por lo que la actualización utiliza el mismo número para cada fila, y me da una 'llave duplicada viola restricción única' error . ¿Qué debería hacer?
Gracias - eso funciona. Me atrapó la sub selección porque estaba tratando de usar el mismo número de secuencia para dos columnas, pero realmente no necesito hacer eso. –
Si desea volver a utilizar el mismo valor de secuencia después de haber llamado a nextval ('secuencia'), puede usar la función relacionada currval ('secuencia'), que devuelve la secuencia actual. – cms