参照されるリクエストとビューに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

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