我想创建一个触发器,以便每当我进行更改(更新或删除)时,都应该将旧数据复制到新表(使用相同的模板)。postgresql-使用触发器触发
我试过这段代码:
create table restrictions(ID int,name text);
insert into restrictions values(122,'suresh');
select * from restrictions;
create table restrictions_deleted(ID int,name text);// this is my duplicate table for keeping information of all updations.
CREATE OR REPLACE FUNCTION moveDeleted() RETURNS trigger AS $$
BEGIN
INSERT INTO restrictions_deleted VALUES(OLD.ID, OLD.name);
RETURN OLD;
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE TRIGGER moveDeleted
BEFORE DELETE ON restrictions
FOR EACH ROW
EXECUTE PROCEDURE moveDeleted();
delete from restrictions where ID=122;
select * from restrictions_deleted;
这个代码能够全部被删除的数据记录到重复表的。但是我也想为更新做同样的事情。
任何建议,任何想法?
你肯定要_replicate上的更新操作的整体table_?您是否考虑过使用数据模型来记录您需要知道的历史信息? – 2013-03-12 09:35:07
@ClassStacker当前的触发器不会复制整个**表。它只会应付当前行。 – 2013-03-12 10:00:02
@IgorRomanchenko绝对。我的错。 – 2013-03-12 10:06:09