![](/img/trans.png)
[英]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.