Oracle 有一个update device…语句,您可以调用update\u device\u status过程,该过程将处理提醒表上需要的任何更新。在我将您的代码集成到触发器中后,触发器将按预期工作。我还可以使用第二个if-子句将标志列表值调整为状态。但是您对总体

Oracle 有一个update device…语句,您可以调用update\u device\u status过程,该过程将处理提醒表上需要的任何更新。在我将您的代码集成到触发器中后,触发器将按预期工作。我还可以使用第二个if-子句将标志列表值调整为状态。但是您对总体,oracle,triggers,Oracle,Triggers,有一个update device…语句,您可以调用update\u device\u status过程,该过程将处理提醒表上需要的任何更新。在我将您的代码集成到触发器中后,触发器将按预期工作。我还可以使用第二个if-子句将标志列表值调整为状态。但是您对总体架构的怀疑是合理的。在对该过程进行第一次考虑之后,我的问题是,我不知道在哪里/如何调用它。@schmimla-您应该调用该过程,而不是将update device语句放入代码中。因此,您可以调用update\u device\u status过


有一个
update device…
语句,您可以调用
update\u device\u status
过程,该过程将处理
提醒
表上需要的任何更新。在我将您的代码集成到触发器中后,触发器将按预期工作。我还可以使用第二个if-子句将
标志列表
值调整为状态。但是您对总体架构的怀疑是合理的。在对该过程进行第一次考虑之后,我的问题是,我不知道在哪里/如何调用它。@schmimla-您应该调用该过程,而不是将
update device
语句放入代码中。因此,您可以调用
update\u device\u status
过程来处理
提醒
表中需要的任何更新,而不是使用
update device…
语句。
update REMINDER set FLAG_LIST = 0 where ID in 
(select r.id from REMINDER r 
    join DEVICE d
        on d.id = (regexp_replace(r.origin_values, '[^0-9]', ''))         
        and d.status <> 0
        and r.context = 'DEVICE'
        and r.flag_list <> 0);
create or replace TRIGGER DEACTIVATE_REMINDER 
AFTER UPDATE OF STATUS ON DEVICE 
for each row
BEGIN
if updating then
    if (:old.STATUS = 0 and :new.STATUS != 0) then
        update REMINDER set FLAG_LIST = 0 where ID in 
            (select r.ID from REMINDER r 
                join DEVICE d
                    on d.id = (regexp_replace(r.ORIGIN_VALUES, '[^0-9]', ''))         
                    and d.STATUS <> 0
                    and d.ID = :new.ID
                    and r.CONTEXT = 'DEVICE'
                    and r.FLAG_LIST <> 0);
    end if;
end if;
END;
create or replace TRIGGER DEACTIVATE_REMINDER 
  AFTER UPDATE OF STATUS ON DEVICE 
  for each row
BEGIN
if updating then
    if (:old.STATUS = 0 and :new.STATUS != 0) then
        update REMINDER set FLAG_LIST = 0 where ID in 
            (select r.ID 
               from REMINDER r 
              where :new.id = (regexp_replace(r.ORIGIN_VALUES, '[^0-9]', ''))         
                and :new.STATUS <> 0
                and r.CONTEXT = 'DEVICE'
                and r.FLAG_LIST <> 0);
    end if;
end if;
END;