我是DB Oracle的新手,当我在Clarity中创建新请求时(即项目和项目组合管理应用程序)或当我更改请求的状态时,我想更新字段{{1} } status
的新值。
以下查询在Update的情况下运行良好,但如果我创建新请求,则不会更新状态。 (因此状态不等于状态MB)。
mb_status_idea
我认为问题在于,在创建新请求时,由于插入触发器OLD包含NO VALUE,因此条件将为false并且不会更新状态。
注意:字段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;
位于表INV_INVETMENTS,(stat:=:new.mb_status_idea),状态MB的数据库列为status
我还添加了这个条件 - >或(:old.mb_status_idea为空),但是当我创建新请求时,“状态”和“状态MB”的值不同(状态未更新)。
如果有人可以帮助解决这个问题我很感激。
所有想法都受到高度赞赏,
莫纳
答案 0 :(得分:1)
使用Clarity时,建议不要使用触发器,原因有两个:作业和进程有时可能会在其他时间更改某些字段的值,而不是通过应用程序进行编辑时。你无法控制这些。如果您使用CA托管服务,则无法使用触发器。必须删除触发器才能进行升级,因为升级过程会破坏它们。
对于这种类型的操作,我建议使用流程引擎。您可以设置一个进程,以便在更新字段时运行。可以通过自定义脚本或系统操作执行更新。系统操作非常简单,可以进行配置。如果您使用自定义脚本,那么管理书架文档中就有示例。您可以编写SQL更新语句并将其放在GEL脚本中。