Triggers 更新多个列时如何触发
在这里,我想在更新任何一列时触发更新查询。但我发现错误表正在变化,触发器/函数可能看不到它Triggers 更新多个列时如何触发,triggers,oracle10g,Triggers,Oracle10g,在这里,我想在更新任何一列时触发更新查询。但我发现错误表正在变化,触发器/函数可能看不到它 create or replace TRIGGER TRIGGER1 AFTER UPDATE OF HOST_ID,ENABLED_FLAG,ACTIVE_FLAG,AGENT_COUNTER,USER_WAIT_FLAG ON MONITOR_AGENT_STATUS FOR EACH ROW BEGIN update monitor_agent_status set
create or replace
TRIGGER TRIGGER1
AFTER UPDATE OF HOST_ID,ENABLED_FLAG,ACTIVE_FLAG,AGENT_COUNTER,USER_WAIT_FLAG ON MONITOR_AGENT_STATUS
FOR EACH ROW
BEGIN
update monitor_agent_status set active_flag='Y', enabled_flag='Y', agent_counter=0, user_flag='N';
END;
您应该在BEFORE行触发器中设置如下值:
create or replace
TRIGGER TRIGGER1
BEFORE UPDATE OF HOST_ID,ENABLED_FLAG,ACTIVE_FLAG,AGENT_COUNTER,USER_WAIT_FLAG ON MONITOR_AGENT_STATUS
FOR EACH ROW
BEGIN
:NEW.active_flag:='Y';
:NEW.enabled_flag:='Y';
:NEW.agent_counter:=0;
:NEW.user_flag:='N';
END;
您的第二个触发器来自以下评论:
CREATE OR REPLACE TRIGGER TRIGGER11
BEFORE UPDATE OF HOST_ID ON HOST_CURR_TIME
FOR EACH ROW
DECLARE
NewHost_Time varchar(10);
BEGIN
select HOST_ID
into NewHost_Time
from HOST_CURR_TIME
where HOST_ID='ATLMB100';
:new.HOST_ID:= case :new.HOST_ID
when 'CCNAFE02' then NewHost_Time
when 'OFCBSERV' then NewHost_Time
else :new.HOST_ID
end;
END;
为什么我们要在触发前采取行动?为什么不在之后?您无法修改after触发器中的值,因为更新已经完成。在更新每行的HOST\u CURR\u TIME上的HOST\u ID之前,创建或替换触发器11声明NewHost\u TIME varchar10;开始从主机当前时间选择主机ID进入新主机时间,其中主机ID='ATLMB100';当'CCNAFE02'时的案例主机ID:新建。主机ID:=新建主机时间当'ofccbserv'时的案例主机ID:新建。主机ID:=新建主机时间其他主机ID结束;终止我在这里触发了另一个触发器,我正在从一列获取数据,需要更新到其他两列。你能检查一下它是正确的还是错误的吗?我们能不能设定一个时间,也就是1分钟后它应该触发。我已经修改了这个触发器,并添加到我的答案中。您的案例陈述存在问题,我已将其转换为案例表达。