【发布时间】:2021-08-29 14:27:15
【问题描述】:
我有一个在 Spring Boot 应用程序启动时使用的初始化脚本,如果表不存在,我会创建它。然后我从表中删除所有数据并在插入时执行一堆。
create table if not exists employee (
id serial primary key,
name varchar(255)
);
delete from employee;
-- inserts
每次执行脚本时,序列仍会继续,因此新行不会从一开始。我也必须重置这样的序列,但是,它是生成的,除非我调用这个脚本,否则我不知道它的名字:
select pg_get_serial_sequence('employee', 'id');
-- returns public.employee_id_seq
我尝试将它们组合在一起并根据此功能的输出重置序列,但没有运气。如何在不知道其名称的情况下重置生成的序列?到目前为止,我的尝试无法从变量中解析 seq 序列:
do $$
declare
seq varchar(255);
begin
select pg_get_serial_sequence('employee', 'employee_id') into seq;
alter sequence seq restart with 1;
end; $$;
【问题讨论】:
标签: sql postgresql spring-boot plpgsql spring-data-r2dbc