【问题标题】:Trigger update does not work when creating a new request创建新请求时触发器更新不起作用
【发布时间】:2013-05-21 12:35:20
【问题描述】:

我是 DB Oracle 的新手,当我在 Clarity(即项目和项目组合管理应用程序)中创建新请求或更改请求状态时,我想将字段 status 更新为mb_status_idea 的新值。

以下查询在更新的情况下运行良好,但如果我创建一个新请求,它不会更新状态。 (所以状态不等于状态 MB)。

IF ( :old.mb_status_idea != :new.mb_status_idea) 
THEN  update inv_investments a 
set a.status = stat 
where a.id=:new.id ;
END IF;

我认为问题在于,在创建新请求时,由于插入触发器 OLD 包含 NO VALUE,因此条件为 false,并且不会更新状态。

注意:status 字段位于表 INV_INVETMENTS 中,(stat := :new.mb_status_idea) 状态 MB 的数据库列是 mb_status_idea

我也加了这个条件 --> 或者(:old.mb_status_idea 为空),但是当我再次创建一个新请求时,“状态”和“状态 MB”的值是不同的(状态没有更新)。

如果有人可以帮助解决这个问题,我将不胜感激。

高度赞赏所有想法,

莫娜

【问题讨论】:

    标签: triggers insert request clarity


    【解决方案1】:

    使用 Clarity 时,建议不要使用触发器,原因有几个……作业和流程有时可能会在其他时间更改某些字段的值,而不是在通过应用程序进行编辑时。你无法控制这些。如果您使用 CA 托管服务,则无法使用触发器。升级必须删除触发器,因为升级过程会破坏它们。

    对于这种类型的操作,我建议使用流程引擎。您可以设置一个流程以在字段更新时运行。可以通过自定义脚本或系统操作执行更新。系统操作的配置相当简单。如果您使用自定义脚本,管理员书架文档中有示例。您将编写一条 SQL 更新语句并将其放入 GEL 脚本中。

    【讨论】:

      猜你喜欢
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      • 2019-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多