我是博士后新手。
我使用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/

10-16 12:08