drop table init_sequence_table;
create table init_sequence_table(
sequence_name varchar(300) null,
seq_curr_val int8 null,
seq_sql varchar(300) null
);
-- 创建 函数
create or replace function init_sequence()
returns void as
$$
declare
seq_record record;
seq_curr_val int8;
sql1 varchar;
seqSql varchar;
begin
execute 'delete from init_sequence_table;';
for seq_record in (select relname from pg_class where relkind='S') loop
sql1:='select last_value from '|| seq_record.relname;
execute sql1 into seq_curr_val;
seqSql:= 'alter sequence ' || seq_record.relname || ' restart with '||seq_curr_val;
execute 'insert into init_sequence_table (sequence_name,seq_curr_val,seq_sql) values ('||'''' ||seq_record.relname|| ''''||','|| seq_curr_val ||','|| '''' || seqSql || ''''||');';
end loop;
end;
$$
LANGUAGE plpgsql;
-- 调用函数
select init_sequence();
select * from init_sequence_table;
Postgresql 获取最新的序列值,并组装成更新序列值的语句
最新推荐文章于 2024-04-26 19:52:36 发布