トリガーは、あらゆる種類の監査に特に役立ちます。この例では、従業員が10パーセントを超える昇給を受けた場合にログ レコードを挿入するAFTER行トリガーを示しています。
以下に、テーブルの定義を示します。
CREATE TABLE employee ( name CHARACTER(30), dept_Id INTEGER, salary DECIMAL(10,2), comments CHARACTER(30)); CREATE TABLE salary_log ( user_name CHARACTER(30), emp_name CHARACTER(30), old_salary DECIMAL(10,2), new_salary DECIMAL(10,2));
ここで、employeeテーブルにトリガーを定義します。
CREATE TRIGGER RaiseTrig AFTER UPDATE OF salary ON employee REFERENCING OLD AS OldRow NEW AS NewRow FOR EACH ROW WHEN ((NewRow.salary-OldRow.salary)/OldRow.salary >.10) INSERT INTO salary_log VALUES ('USER', NewRow.name, OldRow.salary, NewRow.salary);
以下のリクエストが処理されると、salary_logに対して2つの挿入が行なわれます。3番目の更新はトリガーのWHEN条件に適合しないので、salary_logに挿入される行はありません。
UPDATE employee SET salary = salary*1.5, comments = 'Employee of the Year' WHERE name = 'John Smith'; UPDATE employee SET salary = salary*2, comments = 'Employee of the Decade' WHERE name = 'Min Chan'; UPDATE employee SET salary = salary*1.05, comments = 'Normal midrange raise' WHERE name = 'Lev Ulyanov';