首頁 > 資料庫 > mysql教程 > 如何重置與表格行不同步的 Postgres 主鍵序列?

如何重置與表格行不同步的 Postgres 主鍵序列?

Mary-Kate Olsen
發布: 2025-01-23 11:41:10
原創
324 人瀏覽過

How Can I Reset a Postgres Primary Key Sequence Out of Sync with Table Rows?

解 PostgreSQL 主鍵序列差異

主鍵序列與表格的行未對齊可能會導致令人沮喪的重複鍵錯誤。這種情況經常發生在資料匯入或復原過程中,其中序列完整性未被保留。 解決方法如下:

1。找到最大的ID:

使用MAX()函數來辨識表中最大的ID:

<code class="language-sql">SELECT MAX(id) FROM your_table;</code>
登入後複製

2。取得序列的下一個值:

此查詢顯示序列的下一個產生值:

<code class="language-sql">SELECT nextval('your_table_id_seq');</code>
登入後複製

3。重置序列(如果需要):

如果序列的下一個值小於表的最大 ID,則在交易內重置序列以防止並發插入:

<code class="language-sql">BEGIN;
LOCK TABLE your_table IN EXCLUSIVE MODE;
SELECT setval('your_table_id_seq', (SELECT GREATEST(MAX(your_id), nextval('your_table_id_seq') - 1) FROM your_table));
COMMIT;</code>
登入後複製

資料來源:改編自 Ruby 論壇討論。

以上是如何重置與表格行不同步的 Postgres 主鍵序列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板