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

Teradata Vantage™ SQLデータ操作言語

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Release Date
2019年3月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-162K-JPN
Language
日本語 (日本)

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