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?
提前致谢!
最佳答案
您必须将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;
关于php - MySQL ROLLBACK 并与 PHP 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13786339/