我有一个脚本将表数据从一个数据库复制到另一个数据库,但是ID列由序列支持,因此当新记录插入目标表时,nextval(seq)
返回错误的值
我需要更新序列,以便从下一个可用ID开始。
我想做类似的事情:
ALTER SEQUENCE seq_id RESTART WITH
(SELECT MAX(id) FROM tbl);
然而,上面会产生语法错误。
有人可以提出另一种方法吗?
答案 0 :(得分:9)
DO $$
SELECT INTO m MAX(id) FROM tbl;
EXECUTE 'ALTER SEQUENCE seq_id RESTART WITH ' || m;
END$$;
或者,更好的是,请看这个问题: