各テーブルのタイムスタンプを更新するトリガーがあります。次の関数を使用します。
CREATE OR REPLACE FUNCTION update_timstamp_table0() RETURNS TRIGGER AS
$$
BEGIN
IF NEW IS DISTINCT FROM OLD THEN
NEW.table0_timestamp_column = extract( 'epoch' from NOW() )
RETURN NEW;
ELSE
RETURN NULL;
END IF;
END;
$$ LANGUAGE 'plpgsql';
すべてのタイムスタンプ列の名前が異なるため、テーブルごとに関数を作成する必要があります。
私はこのようなことをしたいと思います:
CREATE OR REPLACE FUNCTION update_timstamp(timestamp_col_name varchar) RETURNS TRIGGER AS
$$
BEGIN
IF NEW IS DISTINCT FROM OLD THEN
NEW.(timestamp_col_name) = extract( 'epoch' from NOW() )
RETURN NEW;
ELSE
RETURN NULL;
END IF;
END;
$$ LANGUAGE 'plpgsql';
したがって、すべてのトリガーに同じ関数を使用できます。しかし、変数を介して列にアクセスするための正しい構文がわかりませんNEW.(timestamp_col_name)
。
これは可能ですか?そしてそれはどのように行われますか?