例: ユーザーに必要な権限がない場合の行レベル セキュリティSELECT制約の適用(MERGEリクエスト) - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/vjt1596846980081.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage

この例は、必要なOVERRIDE権限を持たないユーザーが行レベル セキュリティのSELECT制約があるテーブル上でMERGEリクエストを実行する場合に、SELECT制約の述部がソース行に適用される方法を示します。SELECT制約は、MERGEリクエストを送信するユーザーが表示を許可されない行をフィルタリングします。SELECT制約の述部はMATCH条件に追加されます。

EXPLAIN文は、リクエストの実行に係わる手順および制約の述部の適用結果を示すために使用されます。

この例でテーブルの作成に使用される文は、以下のとおりです。

     CREATE TABLE rls_src_tbl(
       col1 INT,
       col2 INT, 
       classification_levels   CONSTRAINT,
       classification_categories CONSTRAINT);

     CREATE TABLE rls_tgt_tbl(
       col1 INT,
       col2 INT, 
       classification_levels   CONSTRAINT,
       classification_categories CONSTRAINT);

ユーザーのセッション制約値は、次のとおりです。

     Constraint1Name LEVELS
     Constraint1Value 2
     Constraint3Name CATEGORIES
     Constraint3Value '90000000'xb

このEXPLAIN文は、MERGEリクエストの実行に係わる手順およびSELECT制約の述部の適用結果を示すために使用されます。

       MERGE INTO rls_tgt_tbl
       USING  rls_src_tbl
       ON (rls_tgt_tbl.col1=1)
       WHEN MATCHED THEN
          UPDATE SET col2=3
       WHEN NOT MATCHED THEN
       INSERT (1,1,rls_src_tbl.levels,rls_src_tbl.categories);

EXPLAINは、条件("((SYSLIB.SELECTCATEGORIES ('90000000'XB, RS.rls_src_tbl.categories ))= 'T') AND ((SYSLIB.SELECTLEVEL (2, RS.rls_src_tbl.levels ))= 'T')")のRS.rls_src_tblからのRETRIEVEステップを示します。

結果は、条件("(((SYSLIB.SELECTCATEGORIES ('90000000'XB, {RightTable}.CATEGORIES)) = 'T') AND ((SYSLIB.SELECTLEVEL (2, {RightTable}.LEVELS )) = 'T')) AND (RS.rls_tgt_tbl.col1 = Field_4)")のRS.rls_tgt_tblへの一致更新および不一致挿入によってマージされます。