ORA_ROWSCN疑似列
ORA_ROWSCN
は、行へ最も新しい変更のシステム変更番号(SCN)を表します。この変更には、ブロック・レベル(粗密)で行われるものと、行レベル(ファイングレイン)で行われるものがあります。後者は行レベル依存の追跡によって行われます。行レベル依存の追跡の詳細は、「CREATE
TABLE
」の「NOROWDEPENDENCIES | ROWDEPENDENCIES」を参照してください。行レベル依存がない場合、ORA_ROWSCN
にはブロック・レベルの依存が反映されます。
ブロック・レベルの場合も行レベルの場合も、ORA_ROWSCN
はSCNそのものであると考えないでください。たとえば、トランザクションによってあるブロック内のRという行が変更され、SCN 10でコミットされた場合、その行のORA_ROWSCN
が常に10を返すとはかぎりません。10未満の値が返されることはありませんが、10以上のあらゆる値が返される可能性があります。つまり、行のORA_ROWSCN
は、必ずその行を最後に変更したトランザクションのコミットSCNであるという保証はありません。しかし、ファイングレインORA_ROWSCN
で、2つのトランザクションT1とT2によって同じ行Rが順番に変更され、コミットされた場合、T1のコミット後に行RのORA_ROWSCN
に関する問合せで返される値と、T2のコミット後に返されるこの値では、T1のコミット後に返される値の方が小さくなります。同じブロックに関する問合せが2回行われた場合、最初の問合せと2番目の問合せの間にその行が更新されていなくても、ORA_ROWSCN
の値は問合せ間で変わる可能性があります。唯一確実なことは、両方の問合せ内のORA_ROWSCN
の値は、その行を最後に変更したトランザクションのコミットSCNよりも大きくなるということです。
ORA_ROWSCN
疑似列はビューへの問合せでは使用できません。ただし、この疑似列を使用して、ビューの作成時に基礎となる表を参照することは可能です。また、UPDATE
文またはDELETE
文のWHERE
句でこの疑似列を使用することもできます。
ORA_ROWSCN
はFlashback Queryではサポートされていません。かわりに、Flashback Queryのために明示的に提供されているバージョン問合せの疑似列を使用します。フラッシュバック問合せの詳細は、SELECT
のflashback_query_clauseを参照してください。バージョン問合せ疑似列の詳細は、バージョン問合せ疑似列を参照してください。
ORA_ROWSCNの制限事項: この疑似列は、外部表ではサポートされません。
例
次の最初の文では、ORA_ROWSCN
疑似列を使用して、employees
表に対する最後の操作のシステム変更番号を取得します。2番目の文では、この疑似列をSCN_TO_TIMESTAMP
ファンクションとともに使用して、操作のタイムスタンプを判別します。
SELECT ORA_ROWSCN, last_name FROM employees WHERE employee_id = 188; SELECT SCN_TO_TIMESTAMP(ORA_ROWSCN), last_name FROM employees WHERE employee_id = 188;
関連項目: