Как обрабатывать транзакции PDO с возможными дублирующимися записями - PullRequest
1 голос
/ 08 августа 2011

Что произойдет, если я совершу транзакцию pdo, в которой одна или несколько записей являются дубликатами уже существующих первичных ключей?Будет ли транзакция вставлять все отсутствующие дубликаты или выполнять откат?

Если это последнее, как я могу предотвратить откат?

1 Ответ

2 голосов
/ 08 августа 2011

Вы не сможете совершить такую ​​транзакцию, потому что вы не сможете вставить такие строки.

см. Ниже В консоли 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
...