テーブルにユーザースタンプを取得する必要がありますが、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))
)
ただし、このような基本的なことについては、「ハッキー」な実装が少ないとよいでしょう。
タイムスタンプについては、「FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP」ステートメントがありますが、他のレジスタ変数に相当するものはないようです。
ヘルプは大歓迎です