A5M2(A5:SQL Mk-2)では、デフォルトではオートコミットが有効になっているため、update文やinsert文といったSQLを実行すると、更新内容が即時に確定されてしまうが、A5M2で明示的にコミットやロールバックを行うこともできる。
今回は、A5M2を利用してOracleに接続し、明示的にコミットやロールバックを行ってみたので、その手順を共有する。
なお、今回はOracleに接続した場合について記載しているが、他のデータベース(MySQL, PostgreSQL、SQL Server)に接続した場合も同じ手順で、明示的にコミットやロールバックを行うことができる。
前提条件
下記記事に記載した方法で、A5M2を利用してOracleに接続できていること。
データベース設定の確認
A5M2のデータベース接続設定を確認すると、データベース更新時に明示的にコミットやロールバックを行う必要があるかどうか(自動的にトランザクションを開始するかどうか)を確認することができる。その手順は、以下の通り。
1) A5M2に接続し、「設定」メニューから「オプション」を選択する。
2)「データベース接続」タブ、「データベースの更新時に自動的にトランザクションを開始する」にチェックOFFであると、明示的にコミットやロールバックを行う必要がないことが確認できる。この画面を閉じるには、「キャンセル」ボタンを押下する。
データベース更新時にオートコミットされることの確認
A5M2では、デフォルトでは「データベースの更新時に自動的にトランザクションを開始する」のチェックがOFFになっているため、オートコミットされる。その確認手順は、以下の通り。
1) データベース更新前のuser_dataテーブルの内容は、以下の通り。
2) user_dataテーブルを追加/更新SQLを指定し、SQLを選択した状態で、「実行」ボタンを押下する。
update user_data set name = 'テスト プリン3更新後' where id = 3; insert into user_data values (4, 'テスト プリン4', 2003, 2, 20, '2', 'テスト4');
SQL実行後、以下のダイアログが表示されるため、「OK」ボタンを押下する。
3) データベースから切断後、再度、A5M2でデータベースに接続する。
4) データベース更新後のuser_dataテーブルの内容は以下の通りで、SQLの更新内容がコミットされていることが確認できる。
トランザクションを有効化(ロールバック)
A5M2では、トランザクションを明示的に開始し、データベース更新時にロールバックを行うこともできる。その手順は、以下の通り。
1) データベース更新前のuser_dataテーブルの内容は、以下の通り。
3) 以下のように、「コミット」または「ロールバック」のボタンが有効化されることが確認できる。
4) user_dataテーブルを追加/更新SQLを指定し、SQLを選択した状態で、「実行」ボタンを押下する。
update user_data set name = 'テスト プリン3更新後' where id = 3; insert into user_data values (4, 'テスト プリン4', 2003, 2, 20, '2', 'テスト4');
SQL実行後、以下のダイアログが表示されるため、「OK」ボタンを押下する。
SQL実行後、以下のダイアログが表示されるため、「はい」ボタンを押下する。
6) データベースから切断後、再度、A5M2でデータベースに接続する。
7) データベース更新後のuser_dataテーブルの内容は以下の通りで、SQLの更新内容がロールバックされていることが確認できる。
トランザクションを有効化(コミット)
A5M2では、トランザクションを明示的に開始し、データベース更新時にコミットを行うこともできる。その手順は、以下の通り。
1) データベース更新前のuser_dataテーブルの内容は、以下の通り。
3) 以下のように、「コミット」または「ロールバック」のボタンが有効化されることが確認できる。
4) user_dataテーブルを追加/更新SQLを指定し、SQLを選択した状態で、「実行」ボタンを押下する。
update user_data set name = 'テスト プリン3更新後' where id = 3; insert into user_data values (4, 'テスト プリン4', 2003, 2, 20, '2', 'テスト4');
SQL実行後、以下のダイアログが表示されるため、「OK」ボタンを押下する。
SQL実行後、以下のダイアログが表示されるため、「はい」ボタンを押下する。
6) データベースから切断後、再度、A5M2でデータベースに接続する。
7) データベース更新後のuser_dataテーブルの内容は以下の通りで、SQLの更新内容がコミットされていることが確認できる。
データベース更新時に明示的にコミットやロールバックを行う設定にした場合
データベース更新時に明示的にコミットやロールバックを行う設定に変更することもできる。その手順や動作確認結果は、以下の通り。
2)「データベース接続」タブ、「データベースの更新時に自動的にトランザクションを開始する」のチェックをONにし、「OK」ボタンを押下する。
3) データベース更新前のuser_dataテーブルの内容は、以下の通り。
4) user_dataテーブルを追加/更新SQLを指定し、SQLを選択した状態で、「実行」ボタンを押下する。
update user_data set name = 'テスト プリン3更新後' where id = 3; insert into user_data values (4, 'テスト プリン4', 2003, 2, 20, '2', 'テスト4');
SQL実行後、以下のダイアログが表示されるため、「OK」ボタンを押下する。
5) SQL実行後、「コミット」または「ロールバック」のボタンが有効化されることが確認できる。
SQL実行後、以下のダイアログが表示されるため、「はい」ボタンを押下する。
7) データベースから切断後、再度、A5M2でデータベースに接続する。
8) データベース更新後のuser_dataテーブルの内容は以下の通りで、SQLの更新内容がロールバックされていることが確認できる。
要点まとめ
- A5M2を利用すると、デフォルトではオートコミットが有効になっているが、明示的にコミットやロールバックを行うような設定にすることもできる。