DB2更新触发器行为之前(DB2 Before Update Trigger Behavior)

2019-10-29 12:12发布

想知道,如果有人可以帮助我了解INSERT触发器之前DB2的行为方式。 我有一个Grails应用程序中插入行到DB2数据库。 有关该表具有插入前触发器,更新用于更新的日期和用户:

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")

我们使用一个通用的应用程序ID和密码通过JNDI进行数据库的连接。 对于审计的目的,我需要设置用户的任何人登录到应用程序的价值。 是完全删除触发,只是真正确保它被设置唯一的解决办法?

Answer 1:

在DB2 USER变量(也称为“特殊寄存器”)包含当前数据库连接的授权标识。 如果一个应用程序希望通过另一个用户ID到DB2,它可以通过调用API函数这样做sqleseti()或存储过程WLM_SET_CLIENT_INFO() - 这里更多信息 。 然后触发可以参考其它专用寄存器CURRENT CLIENT_USERID



文章来源: DB2 Before Update Trigger Behavior
标签: grails db2 gorm