我正在使用PostgreSQL 9.1。我的数据库是结构化的,因此有我的应用程序使用的实际表。对于每个表,都有一个历史表仅存储更改历史记录。历史表包含与实际表相同的字段,外加字段构成一些额外的信息,例如。编辑时间。历史记录表仅由触发器处理。我有两种触发器:Before INSERT 创建表时触发向表中添加一些额外的信息(例如create_time)。Before UPDATE触发器和before DELETE触发器,以将旧值从实际表复制到历史表。问题是我想使用触发器来存储进行这些更改的用户的ID。用id表示来自php应用程序的id,而不是PostgreSQL用户ID。有什么合理的方法吗?使用INSERT和UPDATE,可以仅将ID的额外字段添加到实际表中,并将用户ID作为SQL查询的一部分传递给SQL。据我所知,这不适用于DELETE。所有触发器的结构如下:CREATE OR REPLACE FUNCTION before_delete_customer() RETURNS trigger AS $BODY$BEGIN INSERT INTO _customer ( edited_by, edit_time, field1, field2, ..., fieldN ) VALUES ( -1, // <- This should be user id. NOW(), OLD.field1, OLD.field2, ..., OLD.fieldN ); RETURN OLD;END; $BODY$LANGUAGE plpgsql
添加回答
举报
0/150
提交
取消