Postgresql 9.2触发器记录对另一个表中数据的更改

时间:2012-10-10 20:22:20

标签: postgresql stored-procedures triggers

我有几个表,想要记录对它们进行更改的时间,更改内容以及更改者。 Postgresql 9.2

CREATE TABLE unitsref (
unitsrefid serial primary key,
units varchar,
unitname varchar,
inuse boolean,
systemuse varchar,
keynotes integer,
linkid integer
);

使用OLD是最好的做法。*是新的DISTINCT。*?

CREATE TRIGGER log_unitsref
    AFTER UPDATE ON unitsref
    FOR EACH ROW
    WHEN (OLD.* IS DISTINCT FROM NEW.*)
EXECUTE PROCEDURE log_unitsref();

我只对这三个领域感兴趣:

units varchar,
unitname varchar,
inuse boolean,

我想在表事件日志中使用以下字段记录这些更改:

recordtype varchar,
recordkey varchar,
changetype varchar,
personid integer,
changedate date,
changetime time,
changefrom varchar,
changeto varchar,

编写函数来执行此操作的最佳语法是什么? In Openedge我会写

create  EventLog.
assign  EventLog.PersonId    = glb-Personid
        EventLog.RecordType  = "UnitsRef"
        EventLog.RecordKey   = UnitsRef.Units
        EventLog.ChangeType  = "Create"
        EventLog.changeFrom  = ""
        EventLog.changeTo    = ""
        EventLog.changeDate  = today
        EventLog.changeTime  = time

但我不知道Postgresql中最好的方法

0 个答案:

没有答案