在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
我就废话不多说了,大家还是直接看代码吧~ -- 序列重置到1000 alter sequence sequence_name restart with 1000 -- 验证 SELECT nextval('sequence_name'); 补充:postgresql重置序列和自增主键 1. 问题背景数据表中插入了几条测试数据,后又手动删除,导致后面插入数据的时候报主键冲突: ERROR: duplicate key value violates unique constraint "tableName_pkey" DETAIL: Key (id)=(1) already exists. 即使采用INSERT IGNORE的方式或者REPLACE INTO的方式还是报错,所以就想着重置自增序列和主键。 2. 解决办法2.1 方法一 (1)重置序列起始值为1 alter sequence xxx_id_seq restart with 1 (2)查看当前序列 SELECT nextval('xxx_id_seq '); (3)重置自增主键 TRUNCATE tableName RESTART IDENTITY; 2.2 方法二 (1)清除所有的记录 TRUNCATE tablename questions CASCADE; (2)清除所有的记录,并且索引号从0开始 TRUNCATE tablename questions RESTART IDENTITY CASCADE; 2.3 方法三 也有可能是自增主键和序列不一致导致的,所以也可以不用重置序列起始值和主键,采取把序列号改成和当前最大主键一致的方式: select setval('xxx_id_seq', max(id)) from tableName; 以上为个人经验,希望能给大家一个参考,也希望大家多多支持极客世界。如有错误或未考虑完全的地方,望不吝赐教。 |
请发表评论