我剛剛創建了一個新資料庫并將所有資料從另一個資料庫復制到新資料庫中。在名為“users”的資料庫表之一中,有一列名為“user_id”的列我已設定為“串行主鍵”,因此它會自動遞增。
我剛剛注意到,在資料庫更改后,新用戶的自動增量編號重置為 1。
目前,user_id 的最小值為 13,最大值為 568。在切換到新資料庫之前,自動增量會繼續超過資料庫中的最大值。但是現在在新資料庫中,它從 1 開始自動增量。
我的問題是,當自動增量達到 13 時,postgres 會自動跳過數字 13 到下一個當前未使用的可用數字嗎?或者自動增量會使用數字 13 并且我將有兩個用戶具有相同的 user_id 13?
uj5u.com熱心網友回復:
序列值不會跳過 13,并且INSERT會因違反主鍵而失敗。
加載資料后,您應該將序列計數器設定為高于表中最大實際主鍵值的值。
找出使用的序列:
SELECT pg_get_serial_sequence('users', 'user_id');讓我們假設結果是
users_user_id_seq。找出表中的最大值:
SELECT max(user_id) FROM users;將序列設定為更高的值:
SELECT setval('users_user_id_seq', 1000000);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/383309.html
標籤:sql PostgreSQL的
