0
ユーザー・スタンプを表に入れる必要があり、GENERATED FOR EACH ROW ON UPDATE AS文がDB2のSESSION_USER変数とどのように機能するか把握していない10.5(LUW)。DB2:セッション・ユーザーと連携するステートメントとして常に生成する方法
実装が更新ステートメントでの評価を強制ための偽の変数を持つ関数使用して作業を得ることができた:
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))
)
をしかし、いいだろう。このような基本的なことにはあまり「ハック」の実装を持っています。
タイムスタンプの場合、「各行を更新するには、ROW CHANGE TIMESTAMPとして」という文がありますが、他のレジスタ変数と同等のものはありません。
助けを歓迎します
フィードバックいただきありがとうございます。残念ながら、更新ステートメントでは機能しません。トリガーを使用せずに行を変更した人を自動的にトラップするようにしたいと思います。 – JMX
@JMX。 。 。私はあなたのコードがそれを行うとは思わない。私はトリガーを使う必要があると思います。 –
実際には、関数が行の値に依存する場合(この場合は列 "i"など)に行われます。 – JMX