オレンジみかん■前回のおさらい前回は履歴レコードの動作についてDELETE分を例にして動作を確認しました。その結果、DELETEを行うと履歴表へ履歴レコード追加を行うことが確認出来ました。履歴レコードの操作のタイミングはSCNの範囲として記録していることが確認出来ました。今回も検証で利用しているEMP_MGR表を利用して履歴表の動作を検証したいと思います。検証前の履歴レコードの初期状態は以下のようになります。2450履歴表には以前の検証で作成されたレコードが存在するため、いったん空の状態にしたいと思います。フラッシュバック・アーカイブが変更されました。レコードが選択されませんでした。これで履歴表が空の状態になりました。▼DELETEでの履歴レコードの動作確認おさらいも踏まえてDELETE時の動作を確認してみましょう。履歴表に履歴レコードを追加してみましょう。1行が削除されました。コミットが完了しました。←挿入ROWIDが’AAARoyAAEAAAAGcAAA’のレコードはDELETE文でEMP_MGR表から削除され、履歴表に履歴レコードが追加されます。(I:挿入、D:削除、U:更新)このようにDELETE時の動作では、履歴設定してある表からレコードがDELETEされると、履歴表の履歴レコードの状態が挿入(OPERATION=I)として履歴レコードが追加されます。それではINSERT、UPDATEではどのような動作をするのでしょうか?それぞれの履歴レコードの作成時の動作について確認してみましょう。▼INSERTでの履歴レコードの動作確認EMP_MGR表にENAMEがSCOTTのデータをINSERTして履歴レコードの動作を確認しましょう。1行が作成されました。コミットが完了しました。INSERT文では履歴表に履歴レコードは追加されません。続いてUPDATEの履歴表の状態を確認します。ENAME=’JONES’の表を更新して状態変化を確認してみましょう。1行が更新されました。コミットが完了しました。2450ROWIDが’AAARoyAAEAAAAGcAAB’のレコードに対してSALが3100に更新されました。←挿入UPDATEを発行すると、履歴表にROWIDが’AAARoyAAEAAAAGcAAA’の履歴レコードが追加されました。同じROWIDのレコードを更新をした場合、履歴レコードの状態は更新(OPERATION=U)として履歴レコードが追加されるのでしょうか?それとも挿入(OPERATION=I)として履歴レコードが追加されるのでしょうか?それでは、履歴表に同じROWIDの履歴レコードが存在する状態で、UPDATEを発行してみましょう。1行が更新されました。コミットが完了しました。履歴表に対して既に履歴レコードが存在する場合は、履歴レコードの状態を更新(OPREATION=U)として履歴レコードが追加されます。▼まとめ第3回目、第4回目を通じてFDAの履歴表の動作確認をした結果をまとめると以下の様になります。履歴レコードの内容について:履歴対象テーブルのレコードのトランザクション操作(DELETE、UPDATEなど)の時に操作対象レコードのROWIDをキーにして履歴表にデータが遷移され、トランザクション操作のタイミングはSCNを利用してトランザクションの開始と終了を記録します。+-----------------------+履歴レコードの作成動作について:FDAの履歴レコードはUPDATE、DELETEでは履歴表に対して履歴レコードの追加を行いますが、INSERTでは履歴レコードは作成されません。これは、FDAが履歴表に更新前情報情報を格納していくことから、INSERTのような更新前情報がないケースでは履歴レコードは発生しません。reserved.トップページ企業概要プライバシーポリシ。