一个事务中的两个查询与回滚

时间:2015-11-06 12:33:48

标签: mysql transactions try-catch commit rollback

我想取消两个查询,如果两个中的一个失败,我的测试执行第一个Requette,虽然第二个搁浅

public function testCommit(){

        $host = "localhost";
        $db = "agm_gs";
        $user = "root";
        $password = "";
        $conn;
        $conn = new mysqli($host, $user, $password, $db);

        $sql1 = 'INSERT INTO livreur (id_livreur, code_livreur, nom_livreur, pre_livreur)  VALUES (NULL, \'L001\', \'nom1\', \'pre1\')';
        $sql2 = 'INSERT INTO otherTable XXXXXXXXXXincorrect queryXXXXXXXX';

        try
        {
            $conn->begin_transaction();
            $conn->autocommit(FALSE);

            $conn->query($sql1);
            $conn->query($sql2);

            $conn->commit();
            echo 'Sucess transaction';
        }
        catch(PDOException $e)
        {
            $conn->rollback();
            echo ' Error transaction <br />' . $e->getMessage();
        }
}

这是我的插入结果

enter image description here

1 个答案:

答案 0 :(得分:1)

试试这个: -

$sql1 = 'INSERT INTO livreur 
id_livreur, code_livreur, nom_livreur, pre_livreur)  
VALUES (NULL, \'L001\', \'nom1\', \'pre1\'),
(NULL, \'L002\', \'nom2\', \'pre2\')';
  

使用VALUES语法的INSERT语句可以插入多行。至   执行此操作,包括多个列值列表,每个列值都包含在其中   括号,用逗号分隔。