トリガーは、活動化されると次のような細分性に従って実行されます。
影響される行が空の場合 (すなわち、 WHERE 文節が行を限定しなかった探索済み UPDATE または DELETE の場合)、 FOR EACH ROW トリガーは実行されません。ただし、FOR EACH STATEMENT トリガーはやはり一度実行されます。
たとえば、FOR EACH ROW を使って従業員数の計算を保持することができます。
CREATE TRIGGER NEW_HIRED AFTER INSERT ON EMPLOYEE FOR EACH ROW MODE DB2SQL UPDATE COMPANY_STATS SET NBEMP = NBEMP + 1
FOR EACH STATEMENT の細分性を使って更新を行っても同じ結果が得られます。
CREATE TRIGGER NEW_HIRED AFTER INSERT ON EMPLOYEE REFERENCING NEW_TABLE AS NEWEMPS FOR EACH STATEMENT MODE DB2SQL UPDATE COMPANY_STATS SET NBEMP = NBEMP + (SELECT COUNT(*) FROM NEWEMPS)
注: | FOR EACH STATEMENT の細分性は、 BEFORE トリガーにはサポートされません (トリガー活動化時間で説明)。 |