我有一个触发器来更新每个表的时间戳。我使用以下函数:
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)
访问列的正确语法。
这可能吗?以及它是如何完成的?