我有个关于万能触发器的问题。我使用这个触发器发送电子邮件,如果有任何事件匹配的过滤器。
下面是过滤器:
begin
for each row critical in alerts.status where critical.Severity = 5 and
critical.Grade <= 6 and critical.LastOccurrence <= ( getdate() - (60*30) )
begin
execute send_email( critical.Node, critical.Severity, 'test2@npp.local','Netcool Email', critical.Summary, 'WINITMSVR631');
update alerts.status via critical.Identifier set Grade=7;
end;
end我成功地发了一封电子邮件上面的触发器,
我想在触发器中添加几行代码,如下所示:
begin
for each row critical in alerts.status where critical.Severity = 5 and
critical.Grade <= 6
if critical.Situation = 'blabla1'
{begin
execute send_email( critical.Node, critical.Severity, 'test2@npp.local','Netcool Email', critical.Summary, 'WINITMSVR631');
update alerts.status via critical.Identifier set Grade=7;
end;}
if critical.Situation = 'blabla2'
{begin
execute send_email2( critical.Node, critical.Severity, 'test2@npp.local', 'Netcool Email', critical.Summary, 'WINITMSVR631');
update alerts.status via critical.Identifier set Grade=7;
end;}
end但我总是会犯一些错误。老实说,我对sql编程几乎一无所知。
任何建议
谢谢你的帮助
发布于 2016-11-02 14:13:08
第一件事-我不确定你能否在触发器代码中使用"{“和"}”。语法更像if Node = 'SomeNode' then update alerts.status set Grade = 8; end if; -所以它的如果.那么.;end if;
我修复了您的代码,并且它通过了SQL验证:
begin
for each row critical in alerts.status where critical.Severity = 5 and
critical.Grade <= 6
begin
if (critical.Node = 'blabla1') then
execute send_email( critical.Node, critical.Severity, 'test2@npp.local','Netcool Email', critical.Summary, 'WINITMSVR631');
update alerts.status via critical.Identifier set Grade=7;
end if;
if (critical.Node = 'blabla2') then
execute send_email( critical.Node, critical.Severity, 'test2@npp.local','Netcool Email', critical.Summary, 'WINITMSVR631');
update alerts.status via critical.Identifier set Grade=7;
end if;
end;
endhttps://stackoverflow.com/questions/40190881
复制相似问题