gpt4 book ai didi

mysql - 回滚多个查询

转载 作者:搜寻专家 更新时间:2023-10-30 20:00:01 25 4
gpt4 key购买 nike

如何进行多个查询,使用 commit(),如果出现问题,回滚所有查询?

我注意到如果我包装我的查询并在 try/catch 中提交,只有不成功的查询会回滚

try{

$pdo->beginTransaction();

// create 10 tables
foreach($queries as $query)
$result = $pdo->query($query);

$pdo->commit();

}catch(PDOException $e){

// here if one of the tables fail to be created, undo all operations
$pdo->rollBack();

}

最佳答案

MySQL 不支持嵌入式事务。

如果您认为您得到了部分回滚,那您就错了。特别是,不成功的查询 甚至不会运行,因此没有什么可以回滚的。发生的情况是您实际上没有事务,要么是因为您忘记了 START TRANSACTION 语句,要么是因为您的表不是 InnoDB。

编辑:我刚刚看到您更新了问题。您不能回滚 DDL 语句,例如 CREATE TABLE。您只能回滚 DML 语句(SELECTINSERTUPDATE...)。这不是 MySQL 的限制,这是我所知道的所有 DBMS 引擎的标准行为。

关于mysql - 回滚多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8479489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com