更新列详细信息时PostgreSQL Squence不工作
我创建了一个函数,使用Sequence nextval()函数更新postgresSQL表中的一列更新列详细信息时PostgreSQL Squence不工作,postgresql,database-sequence,Postgresql,Database Sequence,我创建了一个函数,使用Sequence nextval()函数更新postgresSQL表中的一列 BEGIN EXECUTE 'CREATE SEQUENCE '|| sequence_name || ' START 1'; EXECUTE 'UPDATE ' ||selected_table_name|| ' SET record_id = '||nextval(sequence_name); RETURN 'SUCCESS'; END; SELECT stagin
BEGIN
EXECUTE 'CREATE SEQUENCE '|| sequence_name || ' START 1';
EXECUTE 'UPDATE ' ||selected_table_name|| ' SET record_id = '||nextval(sequence_name);
RETURN 'SUCCESS';
END;
SELECT staging.update_record_id('staging.test_table','staging.sq_test_table');
BEGIN
EXECUTE 'CREATE SEQUENCE '|| sequence_name || ' START 1';
EXECUTE 'UPDATE ' ||selected_table_name|| ' SET record_id = nextval('''||sequence_name||''')';
RETURN 'SUCCESS';
END;
但当我调用如下函数时
BEGIN
EXECUTE 'CREATE SEQUENCE '|| sequence_name || ' START 1';
EXECUTE 'UPDATE ' ||selected_table_name|| ' SET record_id = '||nextval(sequence_name);
RETURN 'SUCCESS';
END;
SELECT staging.update_record_id('staging.test_table','staging.sq_test_table');
BEGIN
EXECUTE 'CREATE SEQUENCE '|| sequence_name || ' START 1';
EXECUTE 'UPDATE ' ||selected_table_name|| ' SET record_id = nextval('''||sequence_name||''')';
RETURN 'SUCCESS';
END;
它将所有记录的相关列更新为1。但是,当我直接在控制台中使用以下命令时,它将以增量更新所有值。控制台代码如下所示
update staging.test_table set record_id = nextval('staging.sq_test_table');
如果任何人都能对此给出解决方案,我将不胜感激我找到了问题的解决方案。函数体应更改如下
BEGIN
EXECUTE 'CREATE SEQUENCE '|| sequence_name || ' START 1';
EXECUTE 'UPDATE ' ||selected_table_name|| ' SET record_id = '||nextval(sequence_name);
RETURN 'SUCCESS';
END;
SELECT staging.update_record_id('staging.test_table','staging.sq_test_table');
BEGIN
EXECUTE 'CREATE SEQUENCE '|| sequence_name || ' START 1';
EXECUTE 'UPDATE ' ||selected_table_name|| ' SET record_id = nextval('''||sequence_name||''')';
RETURN 'SUCCESS';
END;
在您的问题中,您将一个字符串与序列(1)的当前值连接起来。这就是为什么所有值都是1。在您的回答中,您让引擎为每一行调用nextval。@谢谢您的解释