为了账号安全,请及时绑定邮箱和手机立即绑定

将用户ID传递给PostgreSQL触发器

将用户ID传递给PostgreSQL触发器

缥缈止盈 2019-10-21 10:08:14
我正在使用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
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 567 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信