postgresql重置序列起始值的操作
我就廢話不多說了,大家還是直接看代碼吧~
-- 序列重置到1000
alter sequence sequence_name restart with 1000
-- 驗(yàn)證
SELECT nextval('sequence_name');
補(bǔ)充:postgresql重置序列和自增主鍵
1. 問題背景
數(shù)據(jù)表中插入了幾條測試數(shù)據(jù),后又手動(dòng)刪除,導(dǎo)致后面插入數(shù)據(jù)的時(shí)候報(bào)主鍵沖突:
ERROR: duplicate key value violates unique constraint "tableName_pkey" DETAIL: Key (id)=(1) already exists.
即使采用INSERT IGNORE的方式或者REPLACE INTO的方式還是報(bào)錯(cuò),所以就想著重置自增序列和主鍵。
2. 解決辦法
2.1 方法一
(1)重置序列起始值為1
alter sequence xxx_id_seq restart with 1
(2)查看當(dāng)前序列
SELECT nextval('xxx_id_seq ');
(3)重置自增主鍵
TRUNCATE tableName RESTART IDENTITY;
2.2 方法二
(1)清除所有的記錄
TRUNCATE tablename questions CASCADE;
(2)清除所有的記錄,并且索引號(hào)從0開始
TRUNCATE tablename questions RESTART IDENTITY CASCADE;
2.3 方法三
也有可能是自增主鍵和序列不一致導(dǎo)致的,所以也可以不用重置序列起始值和主鍵,采取把序列號(hào)改成和當(dāng)前最大主鍵一致的方式:
select setval('xxx_id_seq', max(id)) from tableName;
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
基于PostgreSQL的時(shí)序數(shù)據(jù)庫TimescaleDB的基本用法和概念
時(shí)序數(shù)據(jù)是指按照時(shí)間順序存儲(chǔ)的數(shù)據(jù),TimescaleDB是一個(gè)開源的、擴(kuò)展了PostgreSQL的時(shí)序數(shù)據(jù)庫擴(kuò)展,本文就給大家詳細(xì)的介紹一下基于PostgreSQL的時(shí)序數(shù)據(jù)庫TimescaleDB的基本用法和概念,需要的朋友可以參考下2023-06-06
CentOS中運(yùn)行PostgreSQL需要修改的內(nèi)核參數(shù)及配置腳本分享
這篇文章主要介紹了CentOS中運(yùn)行PostgreSQL需要修改的內(nèi)核參數(shù)及配置腳本分享,本文從系統(tǒng)資源限制類和內(nèi)存參數(shù)優(yōu)化類來進(jìn)行說明,需要的朋友可以參考下2014-07-07
postgresql 實(shí)現(xiàn)修改jsonb字段中的某一個(gè)值
這篇文章主要介紹了postgresql 實(shí)現(xiàn)修改jsonb字段中的某一個(gè)值操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
PostgreSQL ROW_NUMBER() OVER()的用法說明
這篇文章主要介紹了PostgreSQL ROW_NUMBER() OVER()的用法說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02
淺談Postgresql默認(rèn)端口5432你所不知道的一點(diǎn)
這篇文章主要介紹了淺談Postgresql默認(rèn)端口5432你所不知道的一點(diǎn),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
Postgresql的pl/pgql使用操作--將多條執(zhí)行語句作為一個(gè)事務(wù)
這篇文章主要介紹了Postgresql的pl/pgql使用操作--將多條執(zhí)行語句作為一個(gè)事務(wù),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
常用?PostgreSQL?預(yù)防數(shù)據(jù)丟失解決方案
這篇文章主要介紹了常用?PostgreSQL?預(yù)防數(shù)據(jù)丟失方案,本篇主要介紹關(guān)于?DDL?和?DML?操作,如何預(yù)防數(shù)據(jù)丟失的方案,需要的朋友可以參考下2022-01-01
Postgresql 賦予用戶權(quán)限和撤銷權(quán)限的實(shí)例
這篇文章主要介紹了Postgresql 賦予用戶權(quán)限和撤銷權(quán)限的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
PostgreSQL生成列實(shí)現(xiàn)過程介紹
PostgreSQL 12 增加新的特性——生成列(Generated Columns),也就是計(jì)算列。在之前版本也可以實(shí)現(xiàn),但需要定義函數(shù)和觸發(fā)器,利用該功能可以更容易使用并可以提升性能。生成列是給表指定計(jì)算列,其數(shù)據(jù)可以根據(jù)其他列數(shù)據(jù)自動(dòng)生成,當(dāng)原數(shù)據(jù)更新時(shí)其自動(dòng)更新2023-01-01

