postgresql重置序列起始值的操作
我就废话不多说了,大家还是直接看代码吧~
-- 序列重置到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的时序数据库TimescaleDB的基本用法和概念
时序数据是指按照时间顺序存储的数据,TimescaleDB是一个开源的、扩展了PostgreSQL的时序数据库扩展,本文就给大家详细的介绍一下基于PostgreSQL的时序数据库TimescaleDB的基本用法和概念,需要的朋友可以参考下2023-06-06
CentOS中运行PostgreSQL需要修改的内核参数及配置脚本分享
这篇文章主要介绍了CentOS中运行PostgreSQL需要修改的内核参数及配置脚本分享,本文从系统资源限制类和内存参数优化类来进行说明,需要的朋友可以参考下2014-07-07
PostgreSQL ROW_NUMBER() OVER()的用法说明
这篇文章主要介绍了PostgreSQL ROW_NUMBER() OVER()的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-02-02
Postgresql的pl/pgql使用操作--将多条执行语句作为一个事务
这篇文章主要介绍了Postgresql的pl/pgql使用操作--将多条执行语句作为一个事务,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-01-01


最新评论