PDOExceptions和事务

时间:2014-11-24 14:15:03

标签: php pdo transactions

让我们说我在mysql中有一个名为“people”的表有两列: 名称,idNumber。它们都是主键。 该表最初为空,我执行以下代码:

try {
   $db->beginTransaction();

   $db->query("INSERT INTO persons (Name, idNumber) VALUES ('Alex', 10)";
   $db->query("INSERT INTO persons (Name, idNumber) VALUES ('John', 10)";
   $db->commit();

} catch (PDOException $e) {
    $db->rollBack();
    echo $e->getMessage();
}

当然这应该不起作用,因为我们为两个人插入相同的idNumber,10。我的问题是,在捕获第二个插入后MySQL中引发的错误是否会出现PDOException?如果没有,如果出现这种情况,我该如何停止交易呢?在PHP代码中。

1 个答案:

答案 0 :(得分:0)

我只是在初始的$ db inicialization中设置了PDO :: ERRMODE_EXCEPTION。

$ db = new PDO(" mysql:host =" .....,array(PDO :: ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION));