我是博士后新手。
我使用Pgadmin III,我需要参数化statement中的值'alter sequence'。
我试图执行以下代码:
select coalesce(MAX(ID)+1,1) as max into myTempTable from myTable;
EXECUTE immediate 'ALTER SEQUENCE mySequence INCREMENT BY 1 START WITH ' || max || ' MINVALUE 1 NO CYCLE';
但没用。怎么了?我需要把它封装在一个函数中?
谢谢您。
D。
最佳答案
要手动将值设置为序列,可以使用ALTER SEQUENCE seq_name RESTART WITH value
关于你的例子,你需要这样的东西:
CREATE SEQUENCE testseq;
DO $$
DECLARE
maxid INT;
BEGIN
SELECT coalesce(MAX(ID)+1,1) FROM myTable INTO maxid;
EXECUTE 'ALTER SEQUENCE testseq RESTART WITH '|| maxid;
END;
$$ LANGUAGE PLPGSQL
关于postgresql - 如何使用Postgresql创建脚本以参数化序列的起始值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42611358/