我不知道任何锁定。我一直在查看一些MySQL文档,无法完全理解整个过程是如何进行的。我需要的是我脚本中的以下事件发生:
步骤1)表用户被锁定
步骤2)我的脚本从表用户中选择两行
步骤3)我的脚本对表用户进行更新
步骤4)表用户因脚本完成而解锁
我该怎么做呢?当另一个用户在表被锁定时运行同一个脚本时会发生什么?有没有办法让脚本知道何时继续(当表被解锁时?)。我已经研究了启动事务并选择更新,但文档非常不清楚。任何帮助表示赞赏。是的,桌子是innodb。
答案 0 :(得分:0)
通过在更新调用中执行选择查询来消除第2步。然后MySQL负责其余部分。只有一个写入查询可以同时运行,其他写入查询将排在后面。
答案 1 :(得分:0)
我相信你所寻找的是InnoDB表可用的SELECT ... FOR UPDATE语法。这将仅锁定您要更新的记录。您需要将其包装在事务中。 http://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html
例如,运行您的查询:
START TRANSACTION
SELECT ... FOR UPDATE
UPDATE ...
COMMIT