簡體   English   中英

使用 InnoDB 引擎的 Mysql 事務不起作用

[英]Mysql Transaction using InnoDB engine doesn't work

應該取消第一次和第二次插入(假設第二次插入基於第一個)。 無論如何,這里的事務不起作用,即使第二個出錯,它也會提交第一個,因為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;

我認為這不是錯誤。

我有 startet 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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM