DB

A5M2でトランザクション管理を有効にしてみた

A5M2(A5:SQL Mk-2)では、デフォルトではオートコミットが有効になっているため、update文やinsert文といったSQLを実行すると、更新内容が即時に確定されてしまうが、A5M2で明示的にコミットやロールバックを行うこともできる。

今回は、A5M2を利用してOracleに接続し、明示的にコミットやロールバックを行ってみたので、その手順を共有する。

なお、今回はOracleに接続した場合について記載しているが、他のデータベース(MySQL, PostgreSQL、SQL Server)に接続した場合も同じ手順で、明示的にコミットやロールバックを行うことができる。

前提条件

下記記事に記載した方法で、A5M2を利用してOracleに接続できていること。

A5M2を利用して各DBに接続してみたA5M2(A5:SQL Mk-2)は、SQL文の入力支援やER図作成などの機能を備えていて、Oracle、MySQL、PostgreSQ...

データベース設定の確認

A5M2のデータベース接続設定を確認すると、データベース更新時に明示的にコミットやロールバックを行う必要があるかどうか(自動的にトランザクションを開始するかどうか)を確認することができる。その手順は、以下の通り。

1) A5M2に接続し、「設定」メニューから「オプション」を選択する。
データベース設定の確認_1

2)「データベース接続」タブ、「データベースの更新時に自動的にトランザクションを開始する」にチェックOFFであると、明示的にコミットやロールバックを行う必要がないことが確認できる。この画面を閉じるには、「キャンセル」ボタンを押下する。
データベース設定の確認_2

データベース更新時にオートコミットされることの確認

A5M2では、デフォルトでは「データベースの更新時に自動的にトランザクションを開始する」のチェックがOFFになっているため、オートコミットされる。その確認手順は、以下の通り。

1) データベース更新前のuser_dataテーブルの内容は、以下の通り。
オートコミット_1

2) user_dataテーブルを追加/更新SQLを指定し、SQLを選択した状態で、「実行」ボタンを押下する。

オートコミット_2_1

SQL実行後、以下のダイアログが表示されるため、「OK」ボタンを押下する。
オートコミット_2_2

3) データベースから切断後、再度、A5M2でデータベースに接続する。
オートコミット_3_1

オートコミット_3_2 オートコミット_3_3

4) データベース更新後のuser_dataテーブルの内容は以下の通りで、SQLの更新内容がコミットされていることが確認できる。
オートコミット_4

トランザクションを有効化(ロールバック)

A5M2では、トランザクションを明示的に開始し、データベース更新時にロールバックを行うこともできる。その手順は、以下の通り。

1) データベース更新前のuser_dataテーブルの内容は、以下の通り。
ロールバック_1

2)「トランザクションの開始」ボタンを押下する。
ロールバック_2

3) 以下のように、「コミット」または「ロールバック」のボタンが有効化されることが確認できる。
ロールバック_3

4) user_dataテーブルを追加/更新SQLを指定し、SQLを選択した状態で、「実行」ボタンを押下する。

ロールバック_4_1

SQL実行後、以下のダイアログが表示されるため、「OK」ボタンを押下する。
ロールバック_4_2

5)「ロールバック」ボタンを押下する。
ロールバック_5_1

SQL実行後、以下のダイアログが表示されるため、「はい」ボタンを押下する。
ロールバック_5_2

6) データベースから切断後、再度、A5M2でデータベースに接続する。
ロールバック_6_1

ロールバック_6_2 ロールバック_6_3

7) データベース更新後のuser_dataテーブルの内容は以下の通りで、SQLの更新内容がロールバックされていることが確認できる。
ロールバック_7

トランザクションを有効化(コミット)

A5M2では、トランザクションを明示的に開始し、データベース更新時にコミットを行うこともできる。その手順は、以下の通り。

1) データベース更新前のuser_dataテーブルの内容は、以下の通り。
コミット_1

2)「トランザクションの開始」ボタンを押下する。
コミット_2

3) 以下のように、「コミット」または「ロールバック」のボタンが有効化されることが確認できる。
コミット_3

4) user_dataテーブルを追加/更新SQLを指定し、SQLを選択した状態で、「実行」ボタンを押下する。

コミット_4_1

SQL実行後、以下のダイアログが表示されるため、「OK」ボタンを押下する。
コミット_4_2

5)「コミット」ボタンを押下する。
コミット_5_1

SQL実行後、以下のダイアログが表示されるため、「はい」ボタンを押下する。
コミット_5_2

6) データベースから切断後、再度、A5M2でデータベースに接続する。
コミット_6_1

コミット_6_2 コミット_6_3

7) データベース更新後のuser_dataテーブルの内容は以下の通りで、SQLの更新内容がコミットされていることが確認できる。
コミット_7

データベース更新時に明示的にコミットやロールバックを行う設定にした場合

データベース更新時に明示的にコミットやロールバックを行う設定に変更することもできる。その手順や動作確認結果は、以下の通り。

1)「設定」メニューから「オプション」を選択する。
トランザクションの開始_1

2)「データベース接続」タブ、「データベースの更新時に自動的にトランザクションを開始する」のチェックをONにし、「OK」ボタンを押下する。
トランザクションの開始_2

3) データベース更新前のuser_dataテーブルの内容は、以下の通り。
トランザクションの開始_3

4) user_dataテーブルを追加/更新SQLを指定し、SQLを選択した状態で、「実行」ボタンを押下する。

トランザクションの開始_4_1

SQL実行後、以下のダイアログが表示されるため、「OK」ボタンを押下する。
トランザクションの開始_4_2

5) SQL実行後、「コミット」または「ロールバック」のボタンが有効化されることが確認できる。
トランザクションの開始_5

6)「ロールバック」ボタンを押下する。
トランザクションの開始_6_1

SQL実行後、以下のダイアログが表示されるため、「はい」ボタンを押下する。
トランザクションの開始_6_2

7) データベースから切断後、再度、A5M2でデータベースに接続する。
トランザクションの開始_7_1

トランザクションの開始_7_2 トランザクションの開始_7_3

8) データベース更新後のuser_dataテーブルの内容は以下の通りで、SQLの更新内容がロールバックされていることが確認できる。
トランザクションの開始_8

要点まとめ

  • A5M2を利用すると、デフォルトではオートコミットが有効になっているが、明示的にコミットやロールバックを行うような設定にすることもできる。