2016-10-22 17 views
1

옴니버스 트리거에 대한 질문이 있습니다. 필터에 일치하는 이벤트가 있으면이 트리거를 사용하여 전자 메일을 보냅니다.SQL 트리거 (IBM Tivoli Netcool Omnibus)

그 위의 트리거와 내가 성공적으로 이메일을 보내
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, '[email protected]','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, '[email protected]','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, '[email protected]',  'Netcool Email', critical.Summary, 'WINITMSVR631'); 
update alerts.status via critical.Identifier set Grade=7; 
end;} 

end 

하지만 난 항상 약간의 오류가 발생합니다. 솔직히 난 겨우 SQL 프로그래밍에 대해 알고.

는이

당신의 도움이

+0

당신이 얻을 오류 메시지를 제공하세요. –

+0

이것이 내가 어젯밤에 저질렀던 종류의 실수입니다. 고맙습니다. "objectserver가 다음 오류를보고했습니다. 'Error = 구문 12 번째 줄의 구문 분석 오류'CHECK STATEMENT '트리거 생성 또는 바꾸기 mail_on 중요 그룹 기본 트리거 디버그 거짓 사용 가능 우선 순위 1 설명 \'중요 알림에 대한 이메일 보내기. . ', 또는'syntax error '근처 또는 " –

답변

0

먼저 주셔서 감사합니다 조언 - 내가 "{"와 "}"트리거 코드에서 사용할 수있는 확실하지 않다. 구문은 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, '[email protected]','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, '[email protected]','Netcool Email', critical.Summary, 'WINITMSVR631');  
update alerts.status via critical.Identifier set Grade=7; 
end if; 
end; 
end