复制旧表 - 在sql \ plpgsql中触发

时间:2011-12-05 19:42:37

标签: postgresql triggers plpgsql

我的数据库中有某个表的触发器,

CREATE TRIGGER trig_trig
AFTER DELETE OR UPDATE OR INSERT ON A 
FOR EACH ROW
EXECUTE PROCEDURE trig_func();

无论如何..我想创建一个旧表的副本,然后对2之间的差异进行一些测试。

复制表格很简单,我只是这样做:

CREATE OR REPLACE FUNCTION trig_func() RETURNS TRIGGER AS $$
BEGIN

CREATE TABLE temp as(SELECT * FROM A);
DROP TABLE temp;
return new; 
END;
$$ LANGUAGE plpgsql;

但我希望在更改之前和之后获得版本。这只会给我一个 我试过了:

CREATE TABLE temp as(SELECT * FROM OLD.A); 

CREATE TABLE temp as(SELECT * FROM NEW.A);

但我刚收到错误。

有谁知道怎么做?

感谢名单。 亚光

1 个答案:

答案 0 :(得分:0)

OLDNEW是伪记录。行,而不是表格,您无法从中选择

我可以很难建议如何做,因为目前还不清楚你的用意是什么。也许你想创建一个BEFORE操作副本和一个AFTER?在单独的触发器中?