You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

H2数据库2.x版本无法查询information_schema.sequences,求重置序列方法

H2 2.0+ 获取序列并批量重置的方法

H2 2.0及以上版本对系统表的访问规则做了调整,原SELECT sequence_name from information_schema.sequences查询需要指定序列所在的模式才能正确获取结果(默认模式为PUBLIC):

1. 查询所有序列

SELECT SEQUENCE_NAME 
FROM INFORMATION_SCHEMA.SEQUENCES 
WHERE SEQUENCE_SCHEMA = 'PUBLIC';

如果你的序列存放在自定义模式下,将PUBLIC替换为对应的模式名称即可。

2. 批量重置序列

方式一:生成批量重置SQL

执行以下查询生成所有序列的重置语句(默认重置为从1开始,可根据需求修改RESTART WITH的数值):

SELECT CONCAT('ALTER SEQUENCE ', SEQUENCE_NAME, ' RESTART WITH 1;') AS reset_sql
FROM INFORMATION_SCHEMA.SEQUENCES 
WHERE SEQUENCE_SCHEMA = 'PUBLIC';

将查询结果中的SQL语句批量执行,即可完成所有序列的重置。

方式二:关联表数据重置(避免主键冲突)

如果序列是对应表的自增主键生成器,重置前建议先匹配表的最大主键值,避免插入数据时出现主键重复:

-- 示例:重置USERS表对应的序列
ALTER SEQUENCE USERS_SEQ RESTART WITH (SELECT MAX(id) + 1 FROM USERS);

若要批量处理,可结合表与序列的命名规则(H2默认自增序列命名为表名_SEQ)生成对应SQL。

内容的提问来源于stack exchange,提问作者Wael Yakoubi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 09:52:17