MySQL select_for_update()和触发器..阻塞如何工作?

时间:2017-05-13 13:37:07

标签: mysql sql django database innodb

我有一个整数值的行,该行上有很多并发请求,我希望每次读取操作都跟着更新操作(增量),并保持数据一致,只有一个请求可以读取 - >同时更新。

我已经做了一些研究并想出了select_for_update(),我还想到在SELECT上做一个触发器来增加它被选中后的值,问题是..这会像我假设的那样工作吗?

触发器是并行工作还是以这种方式保持一致?

1 个答案:

答案 0 :(得分:1)

django select_for_update是大多数常见数据库(postgres,mysql,oracle ...)中存在的select ... for update功能的包装器,它基本上锁定所选行以防止并发更新。

PostgreSQL docs

MySQL docs

您需要将锁包装到一个事务中,这样访问才会被锁定,直到事务的执行结束。