SYS_ROW_ETAG
目的
ETAG
を表データとともに使用して、SQLを使用したロックフリー行の更新を実行できます。これを実行するには、ファンクションSYS_ROW_ETAG
を使用して、表行の特定の列セットの現在の状態をETAG
ハッシュ値として取得します。ファンクションSYS_ROW_ETAG
は、etagを計算する行の列セットの値を使用して、行のetag (128ビット・ハッシュ値)を計算します。ファンクションに列の名前を任意の順序で渡すことができます。
ファンクションSYS_ROW_ETAG
は、行のこれらの列の値のみを使用して、行のETAG
値を計算します。他のセッションが同時に更新しないようにする、すべての列の名前を渡します。これには、現在のセッションが更新する予定の列も含まれていますが、更新操作がアプリケーションに対して論理的に依存する値を含む列も含まれています。(引数として列をSYS_ROW_ETAG
に渡す順序は関係ありません。)
例
次の例では、NUMBER
型の列c1
、c2
およびc3
を含む表foo
を作成し、表に値を挿入します。次に、列c2
およびc1
をSYS_ROW_ETAG
に渡して、c2
およびc1
のetagを取得します:
CREATE TABLE foo (c1 NUMBER, c2 NUMBER, c3 NUMBER); Table created. INSERT INTO foo VALUES (1, 2, 3); 1 row created. SELECT SYS_ROW_ETAG(c2, c1) FROM foo; SYS_ROW_ETAG(C2,C1) -------------------------------- 3B978191AD0C828DA0E6A53EDF0B278A ---------------
関連項目:
『JSONリレーショナル二面性開発者ガイド』の例4.18ファンクションSYS_ROW_ETAGを使用した同時表更新の最適化による制御