【发布时间】:2012-10-10 20:22:20
【问题描述】:
我有几个表,想记录对它们进行更改的时间、更改的内容以及更改的人员。 PostgreSQL 9.2
CREATE TABLE unitsref (
unitsrefid serial primary key,
units varchar,
unitname varchar,
inuse boolean,
systemuse varchar,
keynotes integer,
linkid integer
);
最佳做法是使用 OLD.* IS DISTINCT FROM NEW.* 吗?
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,
编写函数来执行此操作的最佳语法是什么? 在进行中 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 中最好的方法
【问题讨论】:
标签: postgresql stored-procedures triggers