怎么在postgresql中对序列的起始值进行重置-创新互联
怎么在postgresql中对序列的起始值进行重置?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站设计制作、成都做网站、延平网络推广、重庆小程序开发公司、延平网络营销、延平企业策划、延平品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;成都创新互联公司为所有大学生创业者提供延平建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com-- 序列重置到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;
看完上述内容,你们掌握怎么在postgresql中对序列的起始值进行重置的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
本文题目:怎么在postgresql中对序列的起始值进行重置-创新互联
文章位置:http://myzitong.com/article/degspp.html