16.20 - 例: ユーザーに必要な権限がない場合の行レベル セキュリティSELECTおよびUPDATE制約の適用(UPDATEリクエスト) - 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
日本語 (日本)

この例は、必要な権限を持たないユーザーが行の分類レベル値の更新においてUPDATEリクエストを送信する場合に、SELECTとUPDATEの制約をどのように適用するかを示します。SELECT制約は、ユーザーがアクセスを許可されない行をフィルタリングし、UPDATE制約は、ユーザーがターゲット行で更新操作を実行しないよう制限します。

分類レベル値は、制約列の1つであるclassification_level列に格納されます。もう1つの制約列はclassification_categoriesです。

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

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

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

     Constraint1Name LEVELS
     Constraint1Value 2
     Constraint3Name CATEGORIES
     Constraint3Value '90000000'xb

以下は、UPDATE文です。

      UPDATE rls_tbl SET col1=2 where col1=1;

EXPLAINは、SELECT制約とUPDATE制約の結果を示します。RS.rls_tbl上のRETRIEVEステップは、残余条件("((SYSLIB.SELECTLEVEL (2, RS.rls_tbl.levels ))= 'T') AND ((SYSLIB.SELECTCATEGORIES ('90000000'XB, RS.rls_tbl.categories ))='T')")のプライマリ インデックス"RS.rls_tbl.col1 = 1"によって実行されます。

次に、(RS.rls_tbl.levels = SYSLIB.UPDATELEVEL (2, {LeftTable}.levels)), (RS.rls_tbl.categories = SYSLIB.UPDATECATEGORIES ('90000000'XB, {LeftTable}.categories))によって制約された更新済み行を含むRS.rls_tblへの結果のMERGE DELETEがあります。

次に、結果のRS.rls_tblへのMERGEがあります。