如何使用可能的重复条目处理PDO事务

时间:2011-08-08 11:40:51

标签: php mysql transactions pdo

如果我提交一个pdo事务,其中一个或多个条目与已存在的主键重复,会发生什么?事务是否会插入所有非重复项或回滚?

如果是后者,我该如何防止回滚?

1 个答案:

答案 0 :(得分:2)

您将无法提交此类交易,因为您无法在第一时间插入此类行。

见下文 在MySQL控制台#1中,我们这样做:

mysql> USE TEST;
Database changed
mysql> CREATE TABLE trTest(ID INT UNSIGNED PRIMARY KEY) ENGINE = InnoDB;
Query OK, 0 rows affected (0.46 sec)

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO trTest VALUES (1);
Query OK, 1 row affected (0.00 sec)

然后在控制台#2中我们尝试:

mysql> USE TEST;
Database changed
mysql> START TRANSACTION;

Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO trTest VALUES (1);

提示将不会返回此处,会话将暂停一段时间,直到......

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction