DBの処理実行中に「停電だ!」とかでセッションが途切れてしまったとします。
そんな時でも、トランザクションをちゃんと張っていれば、
DBの処理が中途半端にならず、ロールバックしてくれますよね。
トランザクションを張る際、コミットと宣言することで、
そのトランザクションを終了させることができるわけですが…
トランザクションを明示的に張らずとも、
自動的に張った状態にできるオートコミット値をご存知でしょうか??
オートコミットというのは名前の通り、自動でコミットさせるかどうかの設定です。
DBのオートコミットのデフォルト値は、ONです。
つまり、自動でコミットするため、deleteを実行したら自動コミットが走り、
トランザクションを貼っていない限りはロールバックできないのです。
自動コミットをOFFにすると、
deleteを実行した時でも、まだコミットされておらず、DBには反映されていません。
コミットを宣言すると、DBに反映される訳なんですねー。
DBのオートコミットの設定がどうなっているかは、
以下のようにコンソールから確認できます。
show variables where variable_name="autocommit";
こんな感じで出力されます。
Variable_name|Value|
-------------+-----+
autocommit |ON |
これをOFFにしたかったら、以下を実行。
set autocommit = 0;
ただ、あえてOFFにしている現場は今のところ見たことないですね。
ONがデフォルトで普通ですし、OFFにはしないようにした方が良いと思いますが、
もし「変な挙動になる!」とかで戸惑ったら、設定値を確認してもいいかもですね!
ちなみに、以下でDBの設定値を一覧で取得できるよ。
show variables;