我需要将用户戳记入表中,但没有设法弄清楚 GENERATED FOR EACH ROW ON UPDATE AS 语句如何与 DB2 10.5 (LUW) 中的 SESSION_USER 变量一起使用。
设法使用具有用于强制更新语句中的评估的假变量的函数来实现工作:
CREATE OR REPLACE FUNCTION XXX.CURRENT_USER( tmp varchar(128))
SPECIFIC xxx.XXX_CURRENT_USER
RETURNS VARCHAR(128)
CONTAINS SQL DETERMINISTIC NO EXTERNAL ACTION
BEGIN
RETURN session_user ;
END
GO
CREATE TABLE xxx (
i INTEGER,
t VARCHAR(128) GENERATED ALWAYS AS (XXX.CURRENT_USER(i))
)
但是,对于像这样的基本事物,少一些“hacky”实现会很好。
对于时间戳,有“FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP”语句,但似乎没有其他寄存器变量的等效项。
非常感谢帮助