【发布时间】:2017-02-02 18:24:52
【问题描述】:
我需要将用户戳记入表中,但我还没有弄清楚 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”语句,但其他寄存器变量似乎没有等效项。
非常感谢您的帮助
【问题讨论】:
标签: sql db2 default-value create-table autogeneratecolumn