2016-05-23 52 views
1

前にコミットしているようだ:MySQLのワークベンチ:トランザクションを開始、私はDELETE文の束を書いて、トランザクションにそれらを包んだロールバック

start transaction; 
delete a... 
delete b... 
delete c... 
rollback; 

私は削除がいるだろうトランザクションの内部で発生するのでしょうれるアイデア完了時にロールバックする。ステップが途中で失敗した場合は、成功した手順もロールバックすることをお勧めします。私の悔しさdelete a

が数千行を削除し、働いていた、delete bは失敗したが、私は文をreranときからすべてのレコードがなくなっているように見えました。

これはトランザクションがまだ開いているためですか?私はやってみた:

set session transaction isolation level read committed; 
select a.* 

私はそうではないと思います。成功したaがコミットされましたか?もしそうなら、どのように私は完全な作業のクエリを保証するまで、それが起こるのを防ぎますか?

+0

「autoCommit」をオフにしてください。 – Barmar

答えて

4

MySQL Workbenchでは、デフォルトで自動コミットが有効になっています。 SQLエディタで自由に自動コミットを切り替えるために使用することができ、ツールバーのボタンがあります:

enter image description here

0

誰かが、私がどう思うか、との私を回しこれを行うには良い方法です:

begin; 
<sql transactions> 
commit; 
関連する問題