1
1つ以上のエントリが既存の主キーと重複するpdoトランザクションをコミットするとどうなりますか?トランザクションで重複していないものがすべて挿入されるかロールバックされますか?可能な重複エントリを持つPDOトランザクションを処理する方法
後者の場合、どうすればロールバックを防止できますか?
1つ以上のエントリが既存の主キーと重複するpdoトランザクションをコミットするとどうなりますか?トランザクションで重複していないものがすべて挿入されるかロールバックされますか?可能な重複エントリを持つ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