Oracle OBにおけるトランザクション操作

 2019.06.04  株式会社システムインテグレータ

Oracle OBにおけるトランザクション操作

SI Object Browser for Oracle(以下、OB)はOracle Databaseに対してトランザクション制御文を発行することができます。ここではトランザクション制御文のうち、変更を確定するCOMMITと変更を取り消すROLLBACKを取り上げます。

OBでトランザクション制御文を発行する方法としては以下の2つの方法があります。

  1. SQL実行画面でCOMMIT文、ROLLBACK文を実行する
  2. ツールバーのCOMMIT、ROLLBACKボタン(図1)を用いる

1の方法と2の方法はSI Object Browserにおいて等価ですが、より手軽なのは2の方法でしょう。
またOBには、通常は明示的に発行しなければならないCOMMITを自動で発行する機能があります。これについては後述します。

1

図1 COMMITボタン(円)とROLLBACKボタン(矢印)

新規CTA
新規CTA

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

図 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の基本」を公開しておりますので、よろしければそちらもご利用ください。

いまさら聞けない Oracleの基本

RELATED POST関連記事


RECENT POST「【OBトコ】DBの勉強」の最新記事


【OBトコ】DBの勉強

データベースのスキーマを理解する

【OBトコ】DBの勉強

データベース別インスタンスの関係性

【OBトコ】DBの勉強

ビューとマテリアライズド・ビューの違いを理解する

【OBトコ】DBの勉強

Oracle 表領域を拡張してみよう

Oracle OBにおけるトランザクション操作
新規CTA

新規CTA
ブログ購読のお申込み

RANKING人気資料ランキング

RANKING人気記事ランキング

RECENT POST 最新記事