自动递增 postgres/sequelize
Auto increment in postgres/sequelize
我有一个使用 Sequelize (node/express) 作为 ORM 的 Postgres 数据库。我有一个名为 students 的 table,其中有列:id 和 name。
在这个学生中table,我有几个注册的学生,但是一个细节:最后一个注册的ID是34550,第一个是30000,他们是从以前的数据库导入的,我需要继续从34550开始,也就是从最后一个注册的学生开始算起。但是,当我通过 API 注册学生时,生成的 ID 低于 30000。我知道在 mysql 中,ID 字段为 AUTO INCREMENT 可以解决它,但是,据我了解,postgres 可以工作另一种方式。
我该如何解决这个问题?
用于创建 table 的迁移如下:
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('students', {
id: {
type: Sequelize.INTEGER,
allowNull: false,
autoIncrement: true,
primaryKey: true,
},
name: {
type: Sequelize.STRING,
allowNull: false,
},
});
},
down: (queryInterface) => {
return queryInterface.dropTable('students');
},
};
Table 打印:
根据 Frank 评论,我可以使用以下方法进行调整:
SELECT setval('public.students_id_seq', 34550, true);
我有一个使用 Sequelize (node/express) 作为 ORM 的 Postgres 数据库。我有一个名为 students 的 table,其中有列:id 和 name。
在这个学生中table,我有几个注册的学生,但是一个细节:最后一个注册的ID是34550,第一个是30000,他们是从以前的数据库导入的,我需要继续从34550开始,也就是从最后一个注册的学生开始算起。但是,当我通过 API 注册学生时,生成的 ID 低于 30000。我知道在 mysql 中,ID 字段为 AUTO INCREMENT 可以解决它,但是,据我了解,postgres 可以工作另一种方式。
我该如何解决这个问题?
用于创建 table 的迁移如下:
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('students', {
id: {
type: Sequelize.INTEGER,
allowNull: false,
autoIncrement: true,
primaryKey: true,
},
name: {
type: Sequelize.STRING,
allowNull: false,
},
});
},
down: (queryInterface) => {
return queryInterface.dropTable('students');
},
};
Table 打印:
根据 Frank 评论,我可以使用以下方法进行调整:
SELECT setval('public.students_id_seq', 34550, true);