PostgreSQL清空表后如何将IDENTITY主键ID重置为指定起始值?
PostgreSQL重置IDENTITY自增主键起始值的方法
你使用的GENERATED ALWAYS AS IDENTITY类型主键,本质是PostgreSQL自动为该列关联了一个序列生成器,清空表后序列不会自动重置,需要手动操作调整起始值,两种常用操作方式如下:
方法1:TRUNCATE清空表时同步重置(推荐)
清空表时直接加RESTART IDENTITY参数,一步完成清空+重置自增序列的操作:
- 重置回建表时默认的初始值100100100000:
TRUNCATE TABLE binance_rules RESTART IDENTITY;
- 清空后自定义自增起始值,比如设置为从200100100000开始生成:
TRUNCATE TABLE binance_rules RESTART IDENTITY WITH 200100100000;
如果该表存在外键关联需要级联清空,可在语句末尾加CASCADE参数。
方法2:单独重置自增起始值
如果已经执行过TRUNCATE,需要单独调整自增起始值,使用ALTER TABLE语句操作即可:
-- 示例:将id列的自增起始值重置为100100100000,可替换为你需要的任意数值 ALTER TABLE binance_rules ALTER COLUMN id RESTART WITH 100100100000;
验证操作结果
重置完成后可插入一条测试数据,返回的id值就是新的起始值:
INSERT INTO binance_rules ("THPARS_LIST") VALUES ('yes') RETURNING id;
注:以上语法适用于PostgreSQL 10及以上所有支持IDENTITY列的版本。
内容的提问来源于stack exchange,提问作者Parsika
相关产品推荐
相关产品推荐

