如果我提交一个pdo事务,其中一个或多个条目与已存在的主键重复,会发生什么?事务是否会插入所有非重复项或回滚?
如果是后者,我该如何防止回滚?
答案 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