我正在为ibm maximo应用程序创建一个触发器,该触发器必须在更新mens_ack字段时启动; 发生这种情况时,“状态”字段必须变为某个值
之后,我必须根据关系workorderid = ldkey更新另一个表(longdescription表)
create or replace TRIGGER "MAXIMO"."CHANGE_MENS_MAINT_T"
AFTER UPDATE OF MENS_ACK ON WORKORDER
BEGIN
update workorder
set status='SCHED', statusdate= sysdate
where mens_ack='1' and status!='SCHED';
update longdescription
set ldtext= concat(ldtext, 'scheduled maintenance - '+sysdate+' ')
where ldkey = ????;
END;
我不能在此触发器中使用NEW和OLD,所以我不知道如何使用WORKORDERID(关系所基于的键)来指定我必须在longdescription表中找到的记录< / p>
有人可以帮助我吗?
答案 0 :(得分:0)
您可以在第一次更新时使用RETURNING INTO子句。
https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/returninginto_clause.htm
update workorder
set status='SCHED', statusdate= sysdate
where mens_ack='1' and status!='SCHED'
returning workorderid into v_workorderid;
请注意更新的工作单数量,因为可能必须将v_workorderid声明为数组。