mysqlではデフォルトでON

だが、

例えば二つのテーブルに対するクエリが発行されて、片方のテーブルのデータは更新されて、もう片方はerrorとなるクエリがあった場合autocommitがONになっているとDB全体で見た場合データの不整合が起こるにも関わらずDBのデータは更新されてしまう。

set autocommit = 0

でオフにできる。オンは1

プログラム上で、エラーが発生したらrollback、正常に処理された場合はcommitするようなするのが基本。