1

我创建了一个函数来使用 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 staging.update_record_id('staging.test_table','staging.sq_test_table');

它将所有记录的相关列更新为 1。但是当我直接在控制台中使用以下命令时,它会使用增量更新所有值。控制台代码如下。

update staging.test_table set record_id = nextval('staging.sq_test_table');

有没有人能给出解决方案,不胜感激

4

1 回答 1

1

我找到了问题的解决方案。函数体应更改如下

BEGIN
    EXECUTE 'CREATE SEQUENCE '|| sequence_name || ' START 1';
    EXECUTE 'UPDATE ' ||selected_table_name|| ' SET record_id = nextval('''||sequence_name||''')';
    RETURN 'SUCCESS';
END;
于 2020-01-29T11:37:14.550 回答