让我们说我在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代码中。
答案 0 :(得分:0)
我只是在初始的$ db inicialization中设置了PDO :: ERRMODE_EXCEPTION。
$ db = new PDO(" mysql:host =" .....,array(PDO :: ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION));