Sequelize 中的 FOR SHARE 和 FOR UPDATE 语句

Bog*_*rai 4 javascript mysql sql sequelize.js

当我们使用事务时,常规 SQL 查询可以包含 \xe2\x80\x98SELECT FOR SHARE\xe2\x80\x99 和 \xe2\x80\x98SELECT FOR UPDATE\xe2\x80\x99 语句。

\n\n

有没有办法用 Sequelize 设置相同的语句?我还没有找到这些选项。也许有一些技巧?

\n\n

它\xe2\x80\x99s需要什么,你可以在这里阅读https://dev.mysql.com/doc/refman/8.0/en/innodb-locking-reads.html#locking-read-examples

\n

Bog*_*rai 11

我\xe2\x80\x99已经发现了一点。在 Sequelize.j 中,当我们使用 findAll 和 findOne 时,我们可以传递 \xe2\x80\x98lock\xe2\x80\x99 选项。例如:

\n\n
User.findAll({\n   lock: transaction.LOCK.UPDATE // or SHARE, KEY_SHARE, NO_KEY_UPDATE\n})\n
Run Code Online (Sandbox Code Playgroud)\n\n

但sequelize.js使用\xe2\x80\x98LOCK_IN_SHARE_MODE\xe2\x80\x99语句而不是\xe2\x80\x98FOR SHARE\xe2\x80\x99语句。大多数情况下它们是相同的。

\n\n

KEY_SHARE并且NO_KEY_UPDATE仅用于 PostgreSQL。

\n