当前位置: 首页 > 知识库问答 >
问题:

在postgreSQL update trigger审计中,原始表可以更新,但是审计表中会出现多行。

奚翰海
2023-03-14

我有一个应用了触发器的表,如果它发生变化,它会填充一个审计表。我只用两个字段创建了原始表:

CREATE TABLE events(
    code serial8 NOT NULL,
    event date NOT NULL,
    );

我想要一个触发器来填充审计表,每当第一个表上的事件日期更新时:

CREATE TABLE audit(
    date_log date,
    time_log time,
    userid char(20),
    event_code int, 
    action_log text,
    old_date date,
    new_date date
); 

触发功能:

CREATE OR REPLACE FUNCTION auditing() RETURNS trigger AS $$ BEGIN
    INSERT INTO audit(date_log,time_log,userid,event_code,action_log,old_date,new_date)
    SELECT current_date,current_time,current_user,code,tg_op,OLD.event, NEW.event FROM events;
    RETURN NULL;
END;
$$ LANGUAGE plpgsql;

我像这样设置触发器:

CREATE TRIGGER audit_dates
AFTER UPDATE OF event ON events
FOR EACH ROW EXECUTE PROCEDURE auditing();

我遇到的问题是,每当我运行更新函数时,例如:

UPDATE events SET event = '2013-03-01' WHERE code = 1;

原始表更新得很好,但是应该审计这个的表,为原始表的每一行生成一个审计行,所以如果原始表有200行,我只更新其中的一行,审计表中会生成200新行。

我试图思考这是否是因为我将触发器创建为< code>FOR EACH ROW,但同时我已经阅读了关于这方面的文档,看起来这是我需要的语法。

每次更新原始表时,在审核表中只获得一行新行的正确方法是什么?

共有1个答案

夹谷星纬
2023-03-14

触发器中有SELECT…从事件,因此它选择了所有事件。您可以使用简单的INSERT… VALUES,因为新和旧是变量。

 类似资料:
  • 我随时都有一个“用户”表,如果插入、更新或删除了一行,那么我需要在“用户审核”表中插入一行,其中包含所有用户数据和操作列,以记录执行的操作。 我用的是Spring批处理,Spring数据JPA把数据插入用户表 我如何使用SpringDataJPA在SpringBatch中实现这一点,或者JPA/hibernate是否提供了任何实现?

  • 一旦Spring Security发挥作用,Spring Boot Actuator就有一个灵活的审计框架,可以发布事件(默认情况下,“身份验证成功”,“失败”和“访问被拒绝”例外)。 此功能对于报告和基于身份验证失败实施锁定策略非常有用。 要自定义已发布的安全事件,您可以提供自己的AbstractAuthenticationAuditListener和AbstractAuthorizationA

  • 我的项目中有几个类是由Hibernate处理的,有些是由Envers审核的,有些则不是。现在,当我试图保存某个未经审计的实体时,我得到了以下信息: 有些人可能认为我的数据库中没有审计表,但是Envers甚至不应该试图寻找这个表,因为实体没有被审计。我的类看起来像这样: 因此,每个类都包含一个子类列表,其中包含对其父类的引用。这些类都没有用-注释标记,但它们引用了一些已审核的实体。然而,每个引用都用

  • 日志审计支持查看平台上的所有操作日志以及公有云的操作日志等。 操作日志 操作日志用于显示系统中所有操作信息。 云上日志 将公有云操作日志同步到云联壹云平台上统一查看。

  • 该账号及其子账号的所有操作记录和登录日志,便于在发生问题时用户及时查看。 操作日志 登录历史 操作日志 记录用户及其子用户在页面的所有操作行为,可对操作行为进行追溯,并按照功能模块、操作行为等进行查询。 登录历史 记录用户及其子用户的所有登录行为,包括登录时间、登录IP、用户名、浏览器版本、登录方式等。

  • 有许多选项可用于在审计扫描期间配置Burp Scanner的行为。这些可以在Burp启动扫描时即时配置,或是在 Burp 的配置库中修改其配置。 优化审计 通过这些设置,您可以调整审计的整体逻辑行为,来达到针对目标的一个更好的审计效果。 优化审计可以使用如下配置: 审计速度 - 此选项确定在检查漏洞时某些审计的深度。 快速(Fast)会进行较少的请求,检查某些漏洞时也只是做一个基础审计。 深入(T