使用相同的触发器数据库Oracle更新多个表

时间:2018-07-30 13:02:53

标签: oracle database-trigger maximo

我正在为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>

有人可以帮助我吗?

1 个答案:

答案 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声明为数组。