如何在续集中锁定表,等到另一个请求完成

时间:2018-01-17 09:15:38

标签: node.js sequelize.js

说明

我在db中有一个表Table1。只有一列AppNo(numeric)且只有一行,当前值为0

我使用名为node.js的{​​{1}} ORM在Sequelize创建了API。

每当UpdateAppNo api调用UpdateAppNo的值时,AppNo都会递增。

我想要的是什么:

如果同时发出2个或更多同时请求,则当前请求应等到上一个请求完成。

现在发生了什么:

如果上一个请求正在进行中,则当前请求会抛出错误。

1 个答案:

答案 0 :(得分:5)

这个文档没有很好的记录或很容易找到,但你想要的是Transaction包装你的查询查询,它使用lock选项将其转换为SELECT FOR UPDATE语句。

使用lock选项的查找查询将锁定该行(您不需要锁定整个表),并且由于您正在使用事务,因此将根据事务提交或回滚操作关于你的实例是否持有锁。

您需要调整these示例中的代码供您使用。