我有一個問題,Postgres在導入一些初始數據後抱怨重複的ID,我試圖看看如何增加id列計數器?插入初始數據後Postgres抱怨ID'已經存在'?
詳情:
我最近上傳了一些初始數據到一個Postgres的表,其中ID設置在我的Sequelize模型定義爲自動增量。例如:
sequelize.define('user', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
name: Sequelize.STRING
}
插入數據是這樣的:
INSERT INTO "users" ("id","name") VALUES(1, "bob");
INSERT INTO "users" ("id","name") VALUES(2, "brooke");
INSERT INTO "users" ("id","name") VALUES(3, "nico");
現在從我的node.js應用程序,當我嘗試插入抱怨Key (id)=(1) already exists
的新紀錄。在SQL Sequelize使用採用形式:
INSERT INTO "users" ("id","name") VALUES(DEFAULT, "nico");
如果我是空的記錄表,並再次嘗試這個或重試操作足夠的時間,然後我看到櫃檯做增量。這個問題似乎根據記錄Postgres無法確定當前的最大ID是什麼?
在將初始數據上傳到數據庫後,告訴Postgres更新計數器的正確方法是什麼?
BTW使用的是Postgres 9.6
[Postgresql SERIAL的工作方式是否有所不同?](https://stackoverflow.com/a/18389891/1995738) – klin
另請參見[串行類型](https://www.postgresql.org/docs/current/static/) datatype-numeric.html#DATATYPE-SERIAL) – klin
鏈接文章中描述的行爲與我們在此處看到的內容相符。這是手動指定id值不會更新序列。只有'DEFAULT'遞增該值,所以刷新序列看起來很重要。這與MySQL不同,例如,它基於列中的最大值自動遞增。 –