是否可以在不实际更新数据库的情况下将表锁定在序列表中?我有2个流程需要按一定顺序进行。一种将视频上传到s3,另一种将用户删除。虽然我知道可以在删除用户的同时锁定table.users行,但我想知道是否还有其他方法可以解决,甚至认为用户表并未真正被更改。基本上,如果用户正在上载内容,则需要table.users中的用户行不可编辑。
我从文档中得出的是:
async uploadImage(userId){
await this._resize(640);
await db.sequelize.transaction({
isolationLevel: db.Sequelize.Transaction.ISOLATION_LEVELS.SERIALIZABLE
},
async t => {
user = await db.user.findOne({
where: { id: userId }
}, {transaction: t});
await this._upload();
}).catch(err => {
// do something with the err.
});
return this.uploadData;
}
我的担心是,当我确实在日志输出中看到一个锁弹出时,我无法确定db是否在findOne期间处于锁定状态,然后在this._upload()
运行时解锁,或者直到{{1} }被引用?
如果这不是正确的方法,那么有人可以指出我的方向