说明
我在db中有一个表Table1
。只有一列AppNo(numeric)
且只有一行,当前值为0
我使用名为node.js
的{{1}} ORM在Sequelize
创建了API。
每当UpdateAppNo
api调用UpdateAppNo
的值时,AppNo
都会递增。
我想要的是什么:
如果同时发出2个或更多同时请求,则当前请求应等到上一个请求完成。
现在发生了什么:
如果上一个请求正在进行中,则当前请求会抛出错误。
答案 0 :(得分:5)
这个文档没有很好的记录或很容易找到,但你想要的是Transaction包装你的查询查询,它使用lock
选项将其转换为SELECT FOR UPDATE
语句。
使用lock
选项的查找查询将锁定该行(您不需要锁定整个表),并且由于您正在使用事务,因此将根据事务提交或回滚操作关于你的实例是否持有锁。
您需要调整these示例中的代码供您使用。