0

DB2 before insert トリガーがどのように動作するかを誰かが理解するのを手伝ってくれるかどうか疑問に思っています。DB2 データベースに行を挿入する Grails アプリがあります。問題のテーブルには、更新の日付とユーザーを更新する before insert トリガーがあります。

CREATE TRIGGER WTESTP.SCSMA11I NO CASCADE BEFORE INSERT ON 
WTESTP.SCSMA01T REFERENCING NEW AS NEWROW FOR EACH ROW MODE 
DB2SQL BEGIN ATOMIC SET NEWROW.LST_UPDT_TMSP = 
CURRENT_TIMESTAMP ; SET NEWROW.USER_ID = RTRIM ( USER ) ; END ;

私の Grails アプリケーションでは、ユーザー ID を含むすべての値を設定しました。

flatAdjustmentInstance.setUserID("TS37813")

JNDI を介して汎用アプリケーション ID とパスワードを使用して、データベースに接続します。監査目的で、アプリケーションにログインしたユーザーにユーザーの値を設定する必要があります。トリガーを完全に削除し、それが設定されていることを確認する唯一の解決策はありますか?

4

1 に答える 1

0

DB2USER変数 (「特殊レジスター」とも呼ばれます) には、現在のデータベース接続の許可 ID が含まれています。アプリケーションが別のユーザー ID を DB2 に渡したい場合は、API 関数sqleseti()またはストアード・プロシージャーを呼び出すことによってそれを行うことができますWLM_SET_CLIENT_INFO()(詳細はこちら) 。その後、トリガーは別の特殊レジスターを参照できますCURRENT CLIENT_USERID

于 2013-05-22T01:07:28.870 に答える