参照されるリクエストとビューにLOCKINGリクエスト修飾子が含まれている場合 - Teradata Database - Teradata Vantage NewSQL Engine - 参照されるリクエストとビューにLOCKINGリクエスト修飾子が含まれている場合

Teradata Vantage™ SQLデータ操作言語

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/fbo1512081269404.ditamap
dita:ditavalPath
ja-JP/fbo1512081269404.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage

ビューはLOCKING FOR ACCESSルールを遵守するように作成される場合が多いのですが、ビューに対してLOCKING FOR READリクエスト修飾子を指定することによって、LOCKING FOR ACCESSを変更することができます。たとえば、次のようになります。

     REPLACE VIEW vprod.ad_me_inf AS
     LOCKING TABLE prod.ad_me_inf FOR ACCESS
     SELECT ad_me_id, ad_me_dsc_tx
     FROM prod.ad_me_inf;

以下の問合わせに対してEXPLAINを実行すると、文1にACCESSロックを見ることができます。

     SELECT COUNT(*)
     FROM vprod.ad_me_inf;

以下の問合わせに対してEXPLAINを実行すると、レポートの文1にREADロックを見ることができます。

     LOCKING TABLE vprod.ad_me_inf FOR READ
     SELECT COUNT (*)
     FROM vprod.ad_me_inf;

LOCKING FOR ACCESSリクエスト修飾子は、いつでも誰でも変更することができるため、この動作は望ましくないと見なされます。ただし、ユーザーによっては、これを便利と考え、リクエストにロックを含めることによって、ビューでのロック句を変更するために使用しています。