Workbenchで自動でコミットしない方法

MySQL,Workbench

Workbenchで自動コミットしない設定にする

MacのトップメニューのMySQLWorkbench から Preference を押下します。SQL Executionの項目から、New connections use auto commit modeのチェックを外します。以下のWorkbenchの操作は自動コミットしない場合の動作です。

自動コミットしない場合の動作を確認する

Workbenchで以下のSQLを実行します。UPDATEで更新しても、まだコミットされていません。
SELECT trx_rows_locked FROM information_schema.INNODB_TRX;
を実行すると、ロック中のトランザクションの数が確認できます。

UPDATE test.users SET name = "taro" where id = 2;
SELECT trx_rows_locked FROM information_schema.INNODB_TRX;

trx_rows_lockedが1と表示されます。

SELECT * FROM test.users;

idが2のレコードがtaroに変更されていますが、コミットはされていないことに注意して下さい。コミットされていない場合、Workbenchを停止したときに、rollbackされてしまいます。

コミットしたい場合

UPDATE test.users SET name = "jiro" where id = 3;
COMMIT;
SELECT trx_rows_locked FROM information_schema.INNODB_TRX;

trx_rows_lockedが0と表示されます。コミットがされたので、ロック中のレコードは無いことを意味しています。Workbenchを終了しても、更新した内容は残っています。

ロールバックしたい場合

UPDATE test.users SET name = "久兵衛" where id = 1;
ROLLBACK;
SELECT trx_rows_locked FROM information_schema.INNODB_TRX;

trx_rows_lockedが0と表示されます。
SELECT * FROM test.users;
などを実行してテーブルが変更されていないことを確認します。

MySQLのWorkbenchのページ一覧

・Workbench入門
・Workbenchでcsvをインポートする方法
MySQLのWorkbenchでカラムの順番を変更する
SQLでカラムを一括して更新したい
Workbenchで自動でコミットしない方法
MySQLで更新するデータに別の列の値を使用する
Workbenchでboolean型のカラムを追加するとtinyint型に変えられてしまう
Workbenchでデータベースをimportする