【发布时间】:2011-08-08 11:40:50
【问题描述】:
如果我提交一个 pdo 事务,其中一个或多个条目与现有主键重复,会发生什么情况?事务会插入所有非重复项还是回滚?
如果是后者,如何防止回滚?
【问题讨论】:
标签: php mysql transactions pdo
如果我提交一个 pdo 事务,其中一个或多个条目与现有主键重复,会发生什么情况?事务会插入所有非重复项还是回滚?
如果是后者,如何防止回滚?
【问题讨论】:
标签: php mysql transactions pdo
您将无法提交此类事务,因为您一开始就无法插入此类行。
见下文 在 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
【讨论】: