17.05 - 例: LOCKINGリクエスト修飾子とセカンダリ インデックス - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Release Date
2021年1月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-175K-JPN
Language
日本語 (日本)

基本データの行とインデックスサブテーブルの行は同期されます。 ただし、セカンダリ インデックスが条件式で使用される場合、ACCESSロックによる結果は一貫性がありません。 これは、インデックスの制約がデータ行に対して常に再検証されないためです。

例えば、次のリクエストのように、qualify_accntという列がaccnt_recという基本テーブルのセカンダリ インデックスとして定義されています。

     LOCKING TABLE accnt_rec FOR ACCESS
     SELECT accnt_no, qualify_accnt
     FROM accnt_rec
     WHERE qualify_accnt = 1587;

このリクエストは次の結果を返します。

     accnt_no     qualify_accnt
     --------     -------------
         1761              4214

この場合、値1587はセカンダリ インデックスのサブテーブルで見つかり、対応するデータ行が選択されて返されました。ただし、この検索の進行中、別のユーザーによってアカウントの1761が変更されています。これは、ダーティ読み取りとも呼ばれます。<Teradata Vantage™ - SQLリクエストおよびトランザクション処理、B035-1142>を参照してください。

このような変則的な結果は、最終的にアボートされるトランザクションによって一時的にデータが変更された場合にでも、発生する可能性があります。ACCESSロックは、単にデータの全体像を知りたいときに最も有用です。