1
我有以下存儲過程:IBM DB2觸發需要幫助
CREATE PROCEDURE UPDATE_MODIFICATION_DATE (IN TBLNAME VARCHAR(30), IN ROWID INTEGER)
P1: BEGIN
DECLARE store VARCHAR(1000);
SET store = 'UPDATE ' || TBLNAME || ' SET modification_date=CURRENT TIMESTAMP WHERE id='||ROWID;
PREPARE command FROM store;
EXECUTE command;
END P1
它得到一個表的名稱,行的ID,並更新modification_date欄爲當前的時間戳。
我不知道如何編寫觸發器,每次成功更新或插入表後都會調用此過程。 (所以我想要完成的是存儲一行最後一次觸摸時)。
手冊中有很多觸發器示例。我認爲更新觸發器中的'modification_date'會比在單獨的存儲過程中調用動態SQL更好。 – mustaccio
表名可以超過30個字符(我相信iSeries上的「easy」限制是32,但即使這樣也可以更長)。爲了幫助避免SQL注入,您可能需要根據sysinfo表進行驗證。它如何與多個模式交互 - 它是否默認爲調用觸發器的模式,用戶的模式,編譯過程的模式?像@Charles一樣改變表格可能是最好的長期解決方案 - 這是否行得通?否則,如果你正在定義一個觸發器,我與@mustaccio ...(這是'更新前'的原因......) –