如何在 MySql 中的所有表上暗示 WRITE 锁?

arn*_*arn 4 mysql

如何在 MySql 中的所有表上暗示 WRITE 锁?我尝试了以下但它给出了错误。

FLUSH TABLES mytest.mytable1 WITH  LOCK;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax to use 
near 'WITH  LOCK' at line 1
Run Code Online (Sandbox Code Playgroud)

Lad*_*ada 7

你想在这里做什么?如果您对自己的想法做出假设,MySQL 中的锁可能会有点令人困惑。

  • 一个READ锁允许与锁阅读和其他会话的会话来读不能写。
  • 一个WRITE锁允许带有锁的会话进行读写而其他会话没有访问权限。

FLUSH TABLES语法不允许您指定表列表以及获取锁。 FLUSH TABLES WITH READ LOCK锁定所有表。 FLUSH TABLES <tables>将刷新这些表。刷新表涉及一些隐式锁定,因为在刷新表时新的写入无法进入表,但是一旦刷新完成,就会释放此隐式锁定。

如果你想用写锁锁定特定的表,LOCK TABLES <table> WRITE就是你想要的。您可以在此处提供以逗号分隔的表格列表。如果要锁定所有表,则需要提供整个列表。