Mysql Транзакция с использованием движка InnoDB не работает - PullRequest
0 голосов
/ 10 марта 2020

первая и вторая вставка должны быть отменены (например, вторая, основанная на первой). в любом случае транзакция здесь не работает, она фиксирует первую, даже если вторая выходит из-за ошибки, для SET autocommit = 0 при попытке использования = off и внутри транзакции, и за ее пределами.

SET autocommit = 0;
START TRANSACTION;
insert into rooms
values
("test","0000","0000");
insert into assign_write_rooms
values
("0000","notest","0000");
COMMIT;

1 Ответ

1 голос
/ 10 марта 2020

Я думаю, что это не ошибка.

У меня есть 2 MySQL клиентов. В левой половине я начал транзакцию с 2 вставками. вторая с ошибкой. В правильном клиенте я никогда не вижу данные. Когда я закрываю соединение, данные отката

mysql> select * from rollb;
Empty set (0.00 sec)
                                                mysql> select * from rollb;
                                                Empty set (0.00 sec)

mysql> set autocommit=0;
Query OK, 0 rows affected (0.00 sec)

mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into rollb VALUES (1);
Query OK, 1 row affected (0.00 sec)
                                                mysql> select * from rollb;
                                                Empty set (0.00 sec)


mysql> insert into rollb VALUES (1);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
mysql> select * from rollb;
+----+
| id |
+----+
|  1 |
+----+
1 row in set (0.00 sec)
                                                mysql> select * from rollb;
                                                Empty set (0.00 sec)


mysql>
...