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

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Published
2021年1月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/vnq1596660420420.ditamap
dita:ditavalPath
ja-JP/vnq1596660420420.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage

基本データの行とインデックスサブテーブルの行は同期されます。 ただし、セカンダリ インデックスが条件式で使用される場合、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ロックは、単にデータの全体像を知りたいときに最も有用です。