(57)【要約】      （修正有）【課題】データ変更履歴からトランザクションを考慮してデータの復元を行うことが低コストで行えること。【解決手段】トランザクション開始プロシージャと、トランザクション情報取得プロシージャと、トリガーとを備え、  トランザクション開始プロシージャは、トランザクションの開始直前に、トランザクションＩＤと連番の初期値として０とを記録し、  トランザクション情報取得プロシージャは、トリガーによって起動され、連番を１だけインクリメントした後に、トランザクションＩＤと連番とを読み出してトリガーに渡し、  トリガーは、データ格納用テーブルが変更されることによって起動され、トランザクション情報取得プロシージャを起動してトランザクションＩＤと連番とを受け取ると、変更されたデータ格納用テーブルの変更前のレコード、又は変更後のレコード、或は両方のレコードを、トランザクションＩＤと連番と共に記録するデータ変更履歴記録システム。【選択図】図１
2006127088.tif 000002
【特許請求の範囲】
【請求項１】
トランザクション開始プロシージャと、トランザクション情報取得プロシージャと、トリガーとを備え、
トランザクション開始プロシージャは、トランザクションの開始直前に、トランザクションＩＤと連番の初期値として０とを記録し、
トランザクション情報取得プロシージャは、トリガーによって起動され、連番を１だけインクリメントした後に、トランザクションＩＤと連番とを読み出してトリガーに渡し、
トリガーは、データ格納用テーブルが変更されることによって起動され、トランザクション情報取得プロシージャを起動してトランザクションＩＤと連番とを受け取ると、変更されたデータ格納用テーブルの変更前のレコード、又は変更後のレコード、或は両方のレコードを、トランザクションＩＤと連番と共に記録することを特徴とするデータ変更履歴記録システム。
【請求項２】
トランザクション開始プロシージャと、トランザクション情報取得プロシージャと、トリガーとを備えるシステムが実行する方法であって、
トランザクション開始プロシージャが、トランザクションの開始直前に、トランザクションＩＤと連番の初期値として０とを記録する工程と、
トリガーによって起動されたトランザクション情報取得プロシージャが、連番を１だけインクリメントした後に、トランザクションＩＤと連番とを読み出してトリガーに渡す工程と、
データ格納用テーブルが変更されることによって起動されたトリガーが、トランザクション情報取得プロシージャを起動してトランザクションＩＤと連番とを受け取ると、変更されたデータ格納用テーブルの変更前のレコード、又は変更後のレコード、或は両方のレコードを、トランザクションＩＤと連番と共に記録する工程とを含むことを特徴とするデータ変更履歴記録方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データをテーブル（表）で保管するリレーショナルデータベースにおいて、データの変更履歴を記録する技術に係る。
【０００２】
以後、リレーショナルデータベースを、データベースと略称する。
【背景技術】
【０００３】
一般に、データベースにおいて、トランザクションが実行されて、データの変更がなされる都度、変更がなされた各テーブルについて、挿入（ＩＮＳＥＲＴ）の時は変更（挿入）後のレコード、更新（ＵＰＤＡＴＥ）の時は変更（更新）前後のレコード、削除（ＤＥＬＥＴＥ）の時は変更（削除）前のレコードを記録するというように、各テーブル毎のデータ変更履歴を記録することは、データベーストリガーを用いれば、比較的容易に実現できる。
【０００４】
ここで、トランザクションとは、論理的な１つの作業単位として実行される一連のデータ変更操作のことである。このデータ変更操作は、ＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）で記述される。また、データベーストリガーとは、データ変更のプログラム等が直接呼び出すことのない特殊なストアドプロシージャであって、特定のテーブルや列に対しデータの変更を行ったとき自動で実行されるものである。ここで、ストアドプロシージャとは、データベース中に格納されたプログラムのことである。
【０００５】
ところで、データベーストリガーを用いて各テーブル毎のデータ変更履歴を記録する場合、一般に、以下のような問題がある。
【０００６】
第１に、データベーストリガーでは、実行されたデータ変更操作が、どのトランザクションに属しているか、また、トランザクション内の何番目のものかを把握することができない。このため、データ変更履歴から、トランザクションを考慮してデータの復元を行うことができない。
【０００７】
第２に、各テーブル毎に個別にデータベーストリガーを作成する必要がある。このため、多数のテーブルに分割されたデータベースの場合、データベーストリガーの作成コストが高くなり勝ちである。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は斯かる背景技術に鑑みてなされたもので、データ変更履歴からトランザクションを考慮してデータの復元を行うことが低コストで行えるようにすることを課題とする。
【課題を解決するための手段】
【０００９】
本発明において上記課題を達成するために、まず請求項１の発明では、トランザクション開始プロシージャと、トランザクション情報取得プロシージャと、トリガーとを備え、
トランザクション開始プロシージャは、トランザクションの開始直前に、トランザクションＩＤと連番の初期値として０とを記録し、
トランザクション情報取得プロシージャは、トリガーによって起動され、連番を１だけインクリメントした後に、トランザクションＩＤと連番とを読み出してトリガーに渡し、
トリガーは、データ格納用テーブルが変更されることによって起動され、トランザクション情報取得プロシージャを起動してトランザクションＩＤと連番とを受け取ると、変更
されたデータ格納用テーブルの変更前のレコード、又は変更後のレコード、或は両方のレコードを、トランザクションＩＤと連番と共に記録することを特徴とするデータ変更履歴記録システムとしたものである。
【００１０】
また請求項２の発明では、トランザクション開始プロシージャと、トランザクション情報取得プロシージャと、トリガーとを備えるシステムが実行する方法であって、
トランザクション開始プロシージャが、トランザクションの開始直前に、トランザクションＩＤと連番の初期値として０とを記録する工程と、
トリガーによって起動されたトランザクション情報取得プロシージャが、連番を１だけインクリメントした後に、トランザクションＩＤと連番とを読み出してトリガーに渡す工程と、
データ格納用テーブルが変更されることによって起動されたトリガーが、トランザクション情報取得プロシージャを起動してトランザクションＩＤと連番とを受け取ると、変更されたデータ格納用テーブルの変更前のレコード、又は変更後のレコード、或は両方のレコードを、トランザクションＩＤと連番と共に記録する工程とを含むことを特徴とするデータ変更履歴記録方法としたものである。
【発明の効果】
【００１１】
本発明は、データ変更履歴として、変更されたデータ格納用テーブルの変更前のレコード、又は変更後のレコード、或は両方のレコードを、トランザクションＩＤと連番と共に記録するので、トランザクションＩＤから、実行されたデータ変更操作が、どのトランザクションに属しているのかがわかり、連番から、実行されたデータ変更操作が、トランザクション内の何番目のものかがわかるので、データ変更履歴から、トランザクションを考慮してデータの復元を行うことができる。
【００１２】
また本発明では、トリガーを各データ格納用テーブル毎に個別に作成しなければならないとしても、各データ格納用テーブル毎に個別に作成される個々のトリガーは、同様の定形的な処理を行うものなので、この作成を自動的に行うことが可能であり、トリガーの作成コストを低減できるという効果がある。
【００１３】
以上、本発明は、データ変更履歴からトランザクションを考慮してデータの復元を行うことが低コストで行えるという効果がある。
【発明を実施するための最良の形態】
【００１４】
以下に、本発明の最良の一実施形態を説明する。
【００１５】
１．構成
本実施形態のデータベースシステムは、データベースを備え、図１に示すように、データベース中に格納されるテーブルとして、データ格納用テーブルと、変更データ格納用テーブルと、変更履歴管理用テーブルと、トランザクション管理用テーブルと、変更テーブル管理用テーブルとを備え、またストアドプロシージャとして、トランザクション開始プロシージャと、トリガーと、トランザクション情報取得プロシージャと、トランザクション終了プロシージャとを備えるコンピュータシステムである。
【００１６】
データ格納用テーブルは、ユーザがデータベースで管理を行いたいデータを格納するためのテーブルであって、トランザクションによる変更の対象とされるものである。データ格納用テーブルの数と、個々のデータ格納用テーブルの定義とは、ユーザがデータベースで管理を行いたいデータが、どのようなものかに依存する。
【００１７】
変更データ格納用テーブルは、データ格納用テーブル１つに対して１つ存在し、対応す
るデータ格納用テーブルに対して、現在までに実行されたトランザクションによって施された変更について、対応するデータ格納用テーブルの変更前又は変更後のレコードと、この変更に係る情報とを保管するためのテーブルである。変更データ格納テーブルは、項目として、対応するデータ格納用テーブルの項目と、トランザクションＩＤと、連番と、変更種別とを有する。トランザクションＩＤは、対応するデータ格納用テーブルに変更を施したトランザクションを識別する番号である。連番は、対応するデータ格納用テーブルに変更を施したのが、このトランザクションの何番目のデータ変更操作かを表す番号である。変更種別は、如何なるデータ変更操作により、対応するデータ格納用テーブルの如何なるレコードが、変更データ格納用テーブルに記録されたかを示す情報であって、その値として、挿入（ＩＮＳＥＲＴ）、更新（ＵＰＤＡＴＥ）の前、更新（ＵＰＤＡＴＥ）の後、削除（ＤＥＬＥＴＥ）とがある。挿入（ＩＮＳＥＲＴ）は、挿入（ＩＮＳＥＲＴ）により、対応するデータ格納用テーブルの変更（挿入）後のレコードが記録されたことを意味する。更新（ＵＰＤＡＴＥ）の前は、更新（ＵＰＤＡＴＥ）により、対応するデータ格納用テーブルの変更（更新）前のレコードが記録されたことを意味する。更新（ＵＰＤＡＴＥ）の後は、更新（ＵＰＤＡＴＥ）により、対応するデータ格納用テーブルの変更（更新）後のレコードが記録されたことを意味する。削除（ＤＥＬＥＴＥ）は、削除（ＤＥＬＥＴＥ）により、対応するデータ格納用テーブルの変更（削除）前のレコードが記録されたことを意味する。
【００１８】
変更履歴管理用テーブルは、現在までに実行されたトランザクションに係る情報を保管するためのテーブルである。変更履歴管理用テーブルは、項目として、トランザクションＩＤと、変更種別と、データＩＤとを有し、トランザクションＩＤが主キーとなっている。トランザクションＩＤは、現在までに実行されたトランザクションを唯一に識別する番号である。変更種別は、現在までに実行されたトランザクションが施した変更の種別であって、その値として、挿入（ＩＮＳＥＲＴ）と、更新（ＵＰＤＡＴＥ）と、削除（ＤＥＬＥＴＥ）とがある。データＩＤは、現在までに実行されたトランザクションの変更対象のデータを唯一に識別するＩＤである。
【００１９】
トランザクション管理用テーブルは、現在実行中のトランザクションに係る情報を保管するためのテーブルである。トランザクション管理用テーブルは、項目として、サーバープロセスＩＤと、トランザクションＩＤと、連番とを有し、サーバープロセスＩＤが主キーとなっている。サーバープロセスＩＤは、現在実行中のトランザクションが属するデータベースセッションを唯一に識別するＩＤであって、オラクル社のデータベースではセッションＩＤと呼ばれる。サーバープロセスＩＤを主キーとするのは、同一のデータベースセッションにおいて、複数トランザクションの同時実行性を保証するためである。トランザクションＩＤは、現在実行中のトランザクションを唯一に識別する番号である。連番は、現在実行中のトランザクションが、現在何番目のデータ変更操作を行っているかを表す番号である。但し、連番が０の場合は、まだ何れのデータ変更操作もなされていないことを表し、連番が１の場合に、最初のデータ変更操作がなされたことを表す。
【００２０】
変更テーブル管理用テーブルは、データ格納用テーブルの中で、現在までに実行されたトランザクションで変更されたテーブルに係る情報を保管するためのテーブルである。変更テーブル管理用テーブルは、項目として、トランザクションＩＤと、テーブル名とを有し、トランザクションＩＤと、テーブル名との組が主キーとなっている。トランザクションＩＤは、現在までに実行されたトランザクションを唯一に識別する番号である。テーブル名は、現在までに実行されたトランザクションで変更されたテーブルの名称である。
【００２１】
トランザクション開始プロシージャは、トランザクションの開始直前に起動される。トランザクション開始プロシージャは、このトランザクションが施す変更について、この変更の種別を、項目「変更種別」の値とし、この変更の種別が挿入（ＩＮＳＥＲＴ）の場合
は、空白（ＮＵＬＬ）を、項目「データＩＤ」の値とし、この変更の種別が更新（ＵＰＤＡＴＥ）又は削除（ＤＥＬＥＴＥ）の場合は、この変更の対象となるデータのデータＩＤを、項目「データＩＤ」の値とするレコードを、変更履歴管理用テーブルに挿入することを試み、この試みがなされると、このトランザクションのトランザクションＩＤが発番されて、このレコードに、発番されたトランザクションＩＤを、項目「トランザクションＩＤ」の値として追加したものが、変更履歴管理用テーブルに挿入される。また、変更履歴管理用テーブルにレコードが挿入された後に、トランザクション開始プロシージャは、このトランザクションが属するデータベースセッションのサーバープロセスＩＤを、項目「サーバープロセスＩＤ」の値とし、発番されたトランザクションＩＤを、項目「トランザクションＩＤ」の値とし、０を、項目「連番」の値とするレコードを、トランザクション管理用テーブルに挿入する。
【００２２】
トリガーは、何れかのデータ格納用テーブルに対して、挿入（ＩＮＳＥＲＴ）又は更新（ＵＰＤＡＴＥ）或は削除（ＤＥＬＥＴＥ）の何れかの変更がなされると、自動起動されるデータベーストリガーである。トリガーは、トランザクション情報取得プロシージャを起動し、トランザクション情報取得プロシージャから、この変更を引き起こした現在実行中のトランザクションのデータ変更操作について、このトランザクションのトランザクションＩＤと、このデータ変更操作が、このトランザクションの何番目のデータ変更操作であるかを表す連番とを受け取る。そして、トリガーは、変更がなされたデータ格納用テーブルに対応する変更データ格納用テーブルに、この変更が、挿入（ＩＮＳＥＲＴ）によるものか、又は、更新（ＵＰＤＡＴＥ）によるものか、或は、削除（ＤＥＬＥＴＥ）によるものかに応じて、以下のようなレコードを挿入する。まず、この変更が挿入（ＩＮＳＥＲＴ）による場合、変更がなされたデータ格納用テーブルに対応する変更データ格納用テーブルに挿入されるレコードは、トランザクション情報取得プロシージャから受け取ったトランザクションＩＤを、項目「トランザクションＩＤ」とし、トランザクション情報取得プロシージャから受け取った連番を、項目「連番」の値とし、挿入（ＩＮＳＥＲＴ）を、項目「変更種別」の値とし、変更がなされたデータ格納用テーブルの変更（挿入）後のレコードを含むレコードである。次に、この変更が更新（ＵＰＤＡＴＥ）による場合、変更がなされたデータ格納用テーブルに対応する変更データ格納用テーブルに挿入されるレコードは２つあり、第１のレコードは、トランザクション情報取得プロシージャから受け取ったトランザクションＩＤを、項目「トランザクションＩＤ」とし、トランザクション情報取得プロシージャから受け取った連番を、項目「連番」の値とし、更新（ＵＰＤＡＴＥ）の前を、項目「変更種別」の値とし、変更がなされたデータ格納用テーブルの変更（更新）前のレコードを含むレコードであり、他方、第２のレコードは、トランザクション情報取得プロシージャから受け取ったトランザクションＩＤを、項目「トランザクションＩＤ」とし、トランザクション情報取得プロシージャから受け取った連番を、項目「連番」の値とし、更新（ＵＰＤＡＴＥ）の後を、項目「変更種別」の値とし、変更がなされたデータ格納用テーブルの変更（更新）後のレコードを含むレコードである。最後に、この変更が削除（ＤＥＬＥＴＥ）による場合、変更がなされたデータ格納用テーブルに対応する変更データ格納用テーブルに挿入されるレコードは、トランザクション情報取得プロシージャから受け取ったトランザクションＩＤを、項目「トランザクションＩＤ」とし、トランザクション情報取得プロシージャから受け取った連番を、項目「連番」の値とし、削除（ＤＥＬＥＴＥ）を、項目「変更種別」の値とし、変更がなされたデータ格納用テーブルの変更（削除）前のレコードを含むレコードである。
【００２３】
トランザクション情報取得プロシージャは、トリガーによって起動される。トランザクション情報収録プロシージャは、トランザクション管理用テーブルにおいて、現在実行中のトランザクションが属するデータベースセッションのサーバープロセスＩＤを持つレコードの連番を、１だけインクリメントした後に、このサーバープロセスＩＤを持つレコードから、トランザクションＩＤと、連番とを読み取って、それぞれ、現在実行中のトラン
ザクションのトランザクションＩＤとして、また、このトランザクションの現在実行中のデータ変更操作が何番目のものであるかを表す連番として、トリガーに渡す。またトランザクション情報取得プロシージャは、読み取ったトランザクションＩＤを、項目「トランザクションＩＤ」の値とし、変更がなされたデータ格納用テーブルのテーブル名を、項目「テーブル名」の値とするレコードを、変更テーブル管理用テーブルに挿入する。
【００２４】
トランザクション終了プロシージャは、トランザクションの終了直後に起動される。このトランザクションが施した変更について、この変更が挿入（ＩＮＳＥＲＴ）の場合のみ、トランザクション終了プロシージャは、トランザクション開始プロシージャによって、変更履歴管理用テーブルに挿入されたレコードの項目「データＩＤ」の値を、終了したトランザクションによって、変更対象のデータ格納用テーブルに挿入されたデータのデータＩＤに更新（ＵＰＤＡＴＥ）する。また、トランザクション終了プロシージャは、このトランザクションが属するデータベースセッションのサーバープロセスＩＤを持つレコードを、トランザクション管理用テーブルから削除する。
【００２５】
２．処理
以下に、本実施形態のデータベースシステムが、ある一つのトランザクションを実行することでなされるデータ変更処理の流れの例を、図２のフローチャートに従って説明する。以後、この実行されるトランザクションを、当該トランザクションとも呼ぶことにする
Ｓ（ＳＴＥＰ）１；
トランザクション開始プロシージャが起動される。
【００２６】
Ｓ（ＳＴＥＰ）２；
トランザクション開始プロシージャは、当該トランザクションが施す変更について、この変更の種別を、項目「変更種別」の値とし、この変更の種別が挿入（ＩＮＳＥＲＴ）の場合は、空白（ＮＵＬＬ）を、項目「データＩＤ」の値とし、この変更の種別が更新（ＵＰＤＡＴＥ）又は削除（ＤＥＬＥＴＥ）の場合は、この変更の対象となるデータのデータＩＤを、項目「データＩＤ」の値とするレコードを、変更履歴管理用テーブルに挿入することを試み、この試みがなされると、当該トランザクションのトランザクションＩＤが発番されて、このレコードに、発番されたトランザクションＩＤを、項目「トランザクションＩＤ」の値として追加したものが、変更履歴管理用テーブルに挿入される。
【００２７】
Ｓ（ＳＴＥＰ）３；
トランザクション開始プロシージャは、当該トランザクションが属するデータベースセッションのサーバープロセスＩＤを、項目「サーバープロセスＩＤ」の値とし、発番されたトランザクションＩＤを、項目「トランザクションＩＤ」の値とし、０を、項目「連番」の値とするレコードを、トランザクション管理用テーブルに挿入する。
【００２８】
Ｓ（ＳＴＥＰ）４；
当該トランザクションに含まれる最初のデータ変更操作を当該操作とし、当該操作を実行することで、当該操作が変更対象とするデータ格納用テーブルを変更する。
【００２９】
Ｓ（ＳＴＥＰ）５；
当該操作が変更対象とするデータ格納用テーブルが変更されると、トリガーが自動起動される。
【００３０】
Ｓ（ＳＴＥＰ）６；
トリガーは、トランザクション情報取得プロシージャを起動する。
【００３１】
Ｓ（ＳＴＥＰ）７；
トランザクション情報取得プロシージャは、トランザクション管理用テーブルにおいて、当該トランザクションが属するデータベースセッションのサーバープロセスＩＤを持つレコードの連番を、１だけインクリメントする。
【００３２】
Ｓ（ＳＴＥＰ）８；
トランザクション情報取得プロシージャは、トランザクション管理用テーブルにおいて、当該トランザクションが属するデータベースセッションのサーバープロセスＩＤを持つレコードから、トランザクションＩＤと、連番とを読み取る。
【００３３】
Ｓ（ＳＴＥＰ）９；
トランザクション情報取得プロシージャは、読み取ったトランザクションＩＤを、項目「トランザクションＩＤ」の値とし、当該操作が変更対象としたデータ格納用テーブルのテーブル名を、項目「テーブル名」の値とするレコードを、変更テーブル管理用テーブルに挿入する。
【００３４】
Ｓ（ＳＴＥＰ）１０；
トランザクション情報取得プロシージャは、読み取ったトランザクションＩＤと連番とを、トリガーに渡す。
【００３５】
Ｓ（ＳＴＥＰ）１１；
トリガーは、トランザクション情報取得プロシージャから、トランザクションＩＤと連番とを受け取り、当該操作が変更対象としたデータ格納用テーブルに対応する変更データ格納用テーブルに、当該操作による変更が、挿入（ＩＮＳＥＲＴ）であるか、又は、更新（ＵＰＤＡＴＥ）であるか、或は、削除（ＤＥＬＥＴＥ）であるのかに応じて、以下のようなレコードを挿入する。
【００３６】
当該操作による変更が挿入（ＩＮＳＥＲＴ）である場合、当該操作が変更対象としたデータ格納用テーブルに対応する変更データ格納用テーブルに挿入されるレコードは、トランザクション情報取得プロシージャから受け取ったトランザクションＩＤを、項目「トランザクションＩＤ」とし、トランザクション情報取得プロシージャから受け取った連番を、項目「連番」の値とし、挿入（ＩＮＳＥＲＴ）を、項目「変更種別」の値とし、当該操作が変更対象としたデータ格納用テーブルの変更（挿入）後のレコードを含むレコードである。
【００３７】
当該操作による変更が更新（ＵＰＤＡＴＥ）である場合、当該操作が変更対象としたデータ格納用テーブルに対応する変更データ格納用テーブルに挿入されるレコードは２つあり、第１のレコードは、トランザクション情報取得プロシージャから受け取ったトランザクションＩＤを、項目「トランザクションＩＤ」とし、トランザクション情報取得プロシージャから受け取った連番を、項目「連番」の値とし、更新（ＵＰＤＡＴＥ）の前を、項目「変更種別」の値とし、当該操作が変更対象としたデータ格納用テーブルの変更（更新）前のレコードを含むレコードであり、他方、第２のレコードは、トランザクション情報取得プロシージャから受け取ったトランザクションＩＤを、項目「トランザクションＩＤ」とし、トランザクション情報取得プロシージャから受け取った連番を、項目「連番」の値とし、更新（ＵＰＤＡＴＥ）の後を、項目「変更種別」の値とし、当該操作が変更対象としたデータ格納用テーブルの変更（更新）後のレコードを含むレコードである。
【００３８】
当該操作による変更が削除（ＤＥＬＥＴＥ）である場合、当該操作が変更対象としたデータ格納用テーブルに対応する変更データ格納用テーブルに挿入されるレコードは、トランザクション情報取得プロシージャから受け取ったトランザクションＩＤを、項目「トランザクションＩＤ」とし、トランザクション情報取得プロシージャから受け取った連番を
、項目「連番」の値とし、削除（ＤＥＬＥＴＥ）を、項目「変更種別」の値とし、当該操作が変更対象としたデータ格納用テーブルの変更（削除）前のレコードを含むレコードである。
【００３９】
Ｓ（ＳＴＥＰ）１２；
当該操作が、当該トランザクションに含まれる最後のデータ変更操作でない場合、ＳＴＥＰ１３に進み、
他方、当該操作が、当該トランザクションに含まれる最後のデータ変更操作である場合、ＳＴＥＰ１４に飛ぶ。
【００４０】
Ｓ（ＳＴＥＰ）１３；
当該トランザクションに含まれる当該操作の次のデータ変更操作を新たに当該操作とし、当該操作を実行することで、当該操作が変更対象とするデータ格納用テーブルを変更する。その後、ＳＴＥＰ５に戻る。
【００４１】
Ｓ（ＳＴＥＰ）１４；
トランザクション終了プロシージャが起動される。
【００４２】
Ｓ（ＳＴＥＰ）１５；
当該トランザクションが施した変更が挿入（ＩＮＳＥＲＴ）であった場合、ＳＴＥＰ１６に進み、
他方、当該トランザクションが施した変更が挿入（ＩＮＳＥＲＴ）でなかった場合、ＳＴＥＰ１７に飛ぶ。
【００４３】
Ｓ（ＳＴＥＰ）１６；
トランザクション終了プロシージャは、トランザクション開始プロシージャによって、変更履歴管理用テーブルに挿入されたレコードの項目「データＩＤ」の値を、当該トランザクションによって、変更対象のデータ格納用テーブルに挿入されたデータのデータＩＤに更新（ＵＰＤＡＴＥ）する。
【００４４】
Ｓ（ＳＴＥＰ）１７；
トランザクション終了プロシージャは、当該トランザクションが属するデータベースセッションのサーバープロセスＩＤを持つレコードを、トランザクション管理用テーブルから削除する。
【図面の簡単な説明】
【００４５】
【図１】データベース中に格納されるテーブルとストアドプロシージャとを示す図。
【図２】ある一つのトランザクションを実行することでなされるデータ変更処理の流れの例を示すフローチャート。
【図１】
2006127088.tif 000003
【図２】
2006127088.tif 000004