如何使用PostgreSQL序列更新SQL中的唯一值?

Pet*_*ton 12 sql postgresql sequences

在SQL中,如何更新表,将列设置为每行的不同值?

我想更新PostgreSQL数据库中的某些行,将一列设置为序列中的数字,其中该列具有唯一约束.我希望我可以使用:

update person set unique_number = (select nextval('number_sequence') );
Run Code Online (Sandbox Code Playgroud)

但似乎nextval只被调用一次,所以更新对每一行使用相同的数字,并且我得到'重复键违反唯一约束'错误.我该怎么做呢?

Gre*_*her 29

不要使用subselect,而是直接使用nextval函数,如下所示:

update person set unique_number = nextval('number_sequence');
Run Code Online (Sandbox Code Playgroud)