1
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?

提前致谢!

4

1 回答 1

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;
于 2012-12-10T10:52:43.307 回答