2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

(QA) IBM i Db2 for i のRCACの数値カラムをヌル値でマスクしたい

Last updated at Posted at 2024-09-02

こちらの記事の続編です。

お題:Db2 for i のRCACの数値カラムをヌル値でマスクしたい

回答サンプルは下記のようになります。

ユーザー GOMA2 は売掛残TKUZANカラムをヌル値で返す、それ以外のユーザーはTKUZANカラムの値を返す。

CREATE PERMISSION
GOMALIB.P8 ON GOMALIB.TOKMSPRCA4
FOR ROWS WHERE CURRENT_USER = 'GOMA2 '
ENFORCED FOR ALL ACCESS ENABLE ;

CREATE MASK GOMALIB.M4 ON GOMALIB.TOKMSPRCA4 AS TOKMSPRCA4
FOR COLUMN TKUZAN
RETURN
CASE WHEN ( CURRENT_USER = 'GOMA2 ' )
THEN
  NULL
ELSE
  TOKMSPRCA4.TKUZAN
END
ENABLE;

ALTER TABLE GOMALIB.TOKMSPRCA4 ACTIVATE COLUMN ACCESS CONTROL ;

ポイントは下記黄色部のCASE式の書き方です。

image.png

Db2 for i CASE式のマニュアル

IBM i infoセンター7.5 : https://www.ibm.com/docs/ja/i/7.5?topic=expressions-case-expression

上記ページの下記の記述がサンプルSQL文の黄色個所に該当するようです。

image.png

マスク値としてヌル値をしていたカラムへのアクセス結果例

Excelからマスク指定されたユーザーIDでODBC接続

空欄のカラムとして表示されました。
image.png

QUERY for i

'-' と表示されました。
image.png

CASE式、色々な指定ができるようです。

2
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?