簡體   English   中英

使用InnoDB引擎的mysql中的事務即使在事務未完成的情況下也會保存?

[英]Transactions in mysql with InnoDB engine getting saved even with incomplete transaction?

我正在學習RDBMS中的事務,我想我會用這段代碼測試它:

DELIMITER $$ START TRANSACTION; INSERT INTO test4 VALUES (0,2); INSERT INTO test4 VALUES (2,2); INSERT INTO test4 VALUES (3,2); INSERT INTO test4 VALUES (4,2); INSERT INTO est4 VALUES (4,2); INSERT INTO test4 VALUES (6,2); INSERT INTO test4 VALUES (7,2); INSERT INTO test4 VALUES (8,2); INSERT INTO test4 VALUES (9,2); INSERT INTO test4 VALUES (10,2); INSERT INTO test4 VALUES (11,2); INSERT INTO test4 VALUES (12,2); END; DELIMITER ;

我故意保持第5個插入語句不正確,以便我可以測試事務的工作方式。 當我執行查詢時,MySQL按預期拋出錯誤,但第4次插入的所有查詢仍保存在表中! 為什么會這樣? 是的,我正在使用支持交易的InnoDB引擎。 我使用14.14版本的MySQL。 另外,我想知道保存點的用途是什么? 假設我在事務中使用保存點,以便在事務失敗后可以回滾到上次成功的事務保存點。 交易因失敗而終止后會發生什么? 從那時起保存點會起什么作用? 謝謝!

你可以用魔杖檢查自動提交: http//dev.mysql.com/doc/refman/5.0/en/commit.html

暫無
暫無

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

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