Oracle OBにおけるトランザクション操作
SI Object Browser for Oracle(以下、OB)はOracle Databaseに対してトランザクション制御文を発行することができます。ここではトランザクション制御文のうち、変更を確定するCOMMITと変更を取り消すROLLBACKを取り上げます。
OBでトランザクション制御文を発行する方法としては以下の2つの方法があります。
- SQL実行画面でCOMMIT文、ROLLBACK文を実行する
- ツールバーのCOMMIT、ROLLBACKボタン(図1)を用いる
1の方法と2の方法はSI Object Browserにおいて等価ですが、より手軽なのは2の方法でしょう。
またOBには、通常は明示的に発行しなければならないCOMMITを自動で発行する機能があります。これについては後述します。
図1 COMMITボタン(円)とROLLBACKボタン(矢印)
COMMITとROLLBACKの対象
COMMITとROLLBACKは、主に下記のSQL文によるテーブルへの変更を確定、あるいは取り消すために使用します。
- INSERT (列の挿入)
- UPDATE (列の更新)
- DELETE (列の削除)
上記のSQL文はDML (Data Manipulation Language) 文と呼ばれるものです (上記以外にもDML文は存在します)。
OBにおいては、データタブでテーブル等のデータを編集した場合に、操作に対応するSQL文(INSERT、UPDATE、DELETE)を発行しています。これらのSQL文は、実行したのみでは変更が確定されず、COMMITを実行してはじめて変更が確定します。COMMITを実行する前であれば、ROLLBACKボタンで変更を取り消すことができます。
一方オブジェクトの作成、削除、定義変更を行うDDL (Data Definition Language) 文 を実行した場合、そのSQL文を実行した時点で暗黙的にCOMMITが発行されますので、ROLLBACKでそれ以前の状態に戻ることはできなくなります。
SI Object Browser for Oracleにおいても、テーブルの作成や削除、列名変更等を行ったときは、その時点で内部的にDDL文が発行され、処理が行われます。ROLLBACKボタンでこれらの操作を元に戻すことはできません。
自動COMMITを有効化・無効化する
OBで行ったデータの編集(追加、変更、削除)時のトランザクションを自動で確定したい場合「オプション」画面から「データ編集時に自動的にCOMMITする」のチェックをONにします。
図 2 「データ編集時に自動的にCOMMITする」設定項目
「データ編集時に自動的にCOMMITする」のチェックをONにしておくことで、例えばデータ編集エリアでデータを編集したときにその変更が即座にデータベースに反映されるようになります。
一方、「データ編集時に自動的にCOMMITする」のチェックをONにしていると、操作を誤った際などに元の状態に戻すことが難しくなりますので、本番環境等、慎重な操作が必要となる場面ではOFFにしておくことをおすすめします。
また上記の設定にかかわらず、OBで操作を実行し、COMMITする前にデータベース切断を行ったり、OBを終了したりした場合は、COMMITが自動的に実行されます。ただし、通常の終了処理を経ずにOBを強制終了したときや、OBとデータベースが予期せず切断された際、最後のCOMMIT以降の変更は失われます。 (本記事の趣旨とは外れますが、上記のような場合はデータベース側にOBのセッションが残ってしまうためセッション情報画面等を用いて、手動でセッションを終了させる必要があります。 参考... Oracle セッション情報を確認しよう)
まとめ
OBでトランザクション制御がどのように働くかを説明いたしました。ここまでの説明はあくまでOB上の操作を念頭に置いた説明ですので、トランザクションについて詳細に知りたい方は、Oracleの公式資料や技術系サイト等を検索してみると良いでしょう。部署配属などで新しくOBに触れた方もいらっしゃるかと思いますが、データベースの理解を深めるとともに、OBをうまく活用していただければ幸いです。
なおSI Object Browser WebサイトにてOracle Databaseの基本を解説した「いまさら聞けない Oracleの基本」を公開しておりますので、よろしければそちらもご利用ください。
- カテゴリ:
- キーワード: