1

各テーブルのタイムスタンプを更新するトリガーがあります。次の関数を使用します。

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)

これは可能ですか?そしてそれはどのように行われますか?

4

1 に答える 1

1

この質問を見てください: plpgsql 関数でテーブルのキー フィールドを取得する方法は?

于 2010-09-14T17:31:02.927 に答える