MySQL ROLLBACK并与PHP一起使用

时间:2012-12-09 09:42:41

标签: php mysql transactions

START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1 FOR UPDATE;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;

我直接从MySQL官方文档中获取此查询,我想知道某些方面(我自己添加了FOR UPDATE)。假设有另一个用户已经锁定了记录。在这种情况下,更新应该失败。如果发生这种情况,我肯定想要一种向我的用户显示一个消息框的方法,该消息框将提醒用户记录上有锁。我怎样才能将这些信息反馈给PHP?此查询也不会默认回滚,或者我是否需要添加ROLLBACK?

提前致谢!

1 个答案:

答案 0 :(得分:1)

您必须将 autocommit 变量的值重置为 OFF / 0 / FALSE 。 试试这个:

SET SESSION autocommit = 0;
START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1 FOR UPDATE;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;