[英]PostgreSQL last inserted ID not auto-increment typescript sequelize
[英]Auto-increment based on two columns in Sequelize for postgres
我想在postgres中存储学生数据,如下所示,其中卷数应基于批次自动增加。
我想知道如何在Sequelize中实现这一点。
id batch rollno name
---------------------------------------------------------------
1 A 1000 John
2 A 1001 Javed
3 A 1002 Jake
4 B 1000 Jose
5 B 1001 James
6 A 1003 Jerry
这是我创建的模型。
var Student = sequelize.define('student', {
id: {
type: DataTypes.INTEGER(11),
allowNull: false,
primaryKey: true,
autoIncrement: true
},
batch: {
type: DataTypes.STRING,
allowNull: false,
},
rollno: {
type: DataTypes.INTEGER(11),
allowNull: true,
autoIncrement: true,
},
name: {
type: DataTypes.STRING,
allowNull: true,
}
};
您不能使用常规的自动递增方式执行此操作,因为这将需要为每个批次使用不同的顺序。 您可以通过编写一个在插入时触发并在表中查询批处理中当前最大rollno并添加1的触发器来做到这一点,但这可能不是一个好主意。
您可以做的是在运行查询时计算rollno:
CREATE TABLE test (
id serial,
batch text
);
INSERT INTO test (batch) VALUES ('A');
SELECT
id,
batch,
999 + rank() OVER (PARTITION BY batch order by id) as rollno
FROM test
order by id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.