En SQL, comment mettre à jour une table, en définissant une colonne à une valeur différente pour chaque ligne? Je souhaite mettre à jour certaines lignes dans une base de données PostgreSQL, en définissant une colonne sur un nombre d'une séquence, où cette colonne a une contrainte unique. J'espérais que je pouvais utiliser:Comment mettre à jour des valeurs uniques dans SQL en utilisant une séquence PostgreSQL?
update person set unique_number = (select nextval('number_sequence'));
mais il semble que nextval est appelée une seule fois, de sorte que la mise à jour utilise le même numéro pour chaque ligne, et je reçois une « clé en double violation contrainte unique » erreur . Que devrais-je faire à la place?
Merci - cela fonctionne. J'ai été attrapé par le sous-select parce que j'essayais d'utiliser le même numéro de séquence pour deux colonnes, mais je n'ai pas vraiment besoin de faire ça. –
Si vous souhaitez réutiliser la même valeur de séquence après avoir appelé nextval ('sequence'), vous pouvez utiliser la fonction connexe currval ('sequence'), qui renvoie la séquence en cours. – cms