我有一个问题,Postgres在导入一些初始数据后抱怨重复ID,我试图看看如何增加id列计数器?
细节:
我最近将一些初始数据上传到Postgres表中,其中id设置为我的Sequelize模型定义中的自动增量.例如:
sequelize.define('user', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
name: Sequelize.STRING
}
Run Code Online (Sandbox Code Playgroud)
数据插页如下:
INSERT INTO "users" ("id","name") VALUES(1, "bob");
INSERT INTO "users" ("id","name") VALUES(2, "brooke");
INSERT INTO "users" ("id","name") VALUES(3, "nico");
Run Code Online (Sandbox Code Playgroud)
现在从我的node.js应用程序,当我尝试插入一个新的记录,它抱怨Key (id)=(1) already exists.SQL Sequelize使用的形式如下:
INSERT INTO "users" ("id","name") VALUES(DEFAULT, "nico");
Run Code Online (Sandbox Code Playgroud)
如果我清空记录表并再次尝试这个或重试操作足够多次,那么我看到计数器确实增加了.问题似乎Postgres根据记录无法判断当前的最大ID是多少?
在将初始数据上传到数据库之后,告诉Postgres更新计数器的正确方法是什么?
BTW使用Postgres 9.6
And*_*e M 10
经过一番搜索后发现这将完成我需要做的事情.
SELECT setval('users_id_seq', max(id)) FROM users;
Run Code Online (Sandbox Code Playgroud)
此代码将设置为表id中的当前最大ID,这里是我的users表.注意,要检查序列是否与列相关联,这将起作用:
SELECT pg_get_serial_sequence('patients', 'id')
Run Code Online (Sandbox Code Playgroud)
唯一需要注意的是你忽略了'公众'.部分返回值.
我将添加setval()到我的初始数据脚本.
| 归档时间: |
|
| 查看次数: |
2812 次 |
| 最近记录: |