首页 > 解决方案 > 创建 aiu_trigger ,表可以被多个用户修改

问题描述

我正在实现一个触发器,它会在表 1 发生更改时立即触发。在这种情况下,第一个用户是学生,他可以使用表单编辑此表。然后触发器在所谓的 AUDIT 表中记录谁做了什么以及什么时候以他们想要的形式。但是,我有以下问题:

所以我想知道是否有可能说 AUDIT_TBL1 表上的插入应该只发生在表 1 的 ID 与负责人编辑的 ID 相同的行中。或者换句话说,在 AUDIT_TBL1 中插入更新/编辑的 tbl1 id 等于表 1 中的 id。我知道代码远非完美,但如果能特别澄清这个问题,我将不胜感激。

我已经被困在这里很长时间了,非常感谢任何帮助:)

负责人当前在表 1(表格)中更改的行以彩色显示。 表格

然后触发触发器,但正如您所见,它还会为负责人未更改但他作为负责人输入的行创建一个条目。 虚假审计表

但是,我宁愿这种情况发生

应该如何

对于负责人刚刚更改的行,仅在审计表中创建一个条目。

特别是在这种情况下,问题是是否可以在 APEX 中找出当前正在修改的行并获取某个列的值(此处为 Form ID),然后仅在审计表中为此创建一个条目价值。

标签: oracletriggersapex

解决方案


正如其他人在评论中所说,很难从您提供的信息中理解您正在尝试做什么。但是要在黑暗中开枪......你说一个人可以负责多种形式,所以在我看来这段代码应该在下面失败......

  if (does_exist>0) then
    select r.ID, f.ID 
    into v_resp,v_form_id 
    from RESPONSIBLE r 
    left outer join forms f on r.respid=i.ID
    where r.uuid = v_userid ;
  end if;

如果用户有多个职责或多个表单,那么这将得到一个 too_many_rows 错误。不是您描述的症状,而是我相信您发布的代码会发生什么。

我猜你必须做些什么来修复它,将在上面的选择中添加一些条件,指定责任/表格(我只能假设这些记录在 TBL1 中,因此可以使用:NEW.Fieldname 访问)


推荐阅读