0
想知道是否有人能夠幫助我理解插入觸發器之前的DB2的行爲。我有一個將行插入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來建立到數據庫的連接。爲了審計目的,我需要將用戶的值設置爲登錄到應用程序的用戶。是唯一的解決方案,完全刪除觸發器,只是確定它被設置?
你的問題有點不清楚,你能詳細說明一下嗎? – dmahapatro
具體而言,我希望覆蓋觸發器用於設置user_id字段的值。我會認爲,因爲它是更新之前它將使用傳入的值,但是值不會更改。 –
是的,在這種情況下,我認爲你已經擺脫了觸發器,因爲觸發器將使用來自連接的用戶信息,在你的情況下這將是'applicationID'。這將有點泛化,但是您可以在觸發器中添加一個邏輯來檢查user_id是否已經從應用程序發送,然後不要將應用程序用戶ID設置爲Trigger。這是我的理論,只是爲了確保你不會丟掉觸發器。 :) – dmahapatro