【问题标题】:How to handle PDO transactions with possible duplicate entries如何处理可能存在重复条目的 PDO 事务
【发布时间】:2011-08-08 11:40:50
【问题描述】:

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

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

【问题讨论】:

    标签: php mysql transactions pdo


    【解决方案1】:

    您将无法提交此类事务,因为您一开始就无法插入此类行。

    见下文 在 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
    

    【讨论】:

      猜你喜欢
      • 2014-11-21
      • 2011-01-07
      • 2011-03-09
      • 2018-02-04
      • 2018-05-19
      • 1970-01-01
      • 2017-08-11
      • 2017-08-03
      相关资源
      最近更新 更多