Professional Documents
Culture Documents
Advanced DataBase
01
Name:
Qasim Ali
Enrollment # 01-234122-019
Class:
BSCS-6B
Date:
23-02-2015
Submitted To:
Usage of Triggers
Triggers can be written for the following purposes:
Auditing
Examples of Triggers
1. Logging deletions
CREATE TRIGGER Books_Delete
AFTER DELETE ON Books
REFERENCING OLD ROW AS Old
FOR EACH ROW
INSERT INTO Books_Deleted_Log
VALUES (Old.title);
3. Constraint substitute
CREATE TRIGGER Departments_Update
AFTER UPDATE OF budget ON Departments
WHEN (CURRENT_TIME > '17:00:00')
/* first flaw */
/* second flaw */
4. Cascading update
CREATE TRIGGER Prime_Minister_Update
AFTER UPDATE ON Prime_Ministers
REFERENCING OLD ROW AS Old, NEW ROW AS New FOR EACH ROW
WHEN (New.name = 'Bob' AND New.name <> Old.name)
UPDATE Taxpayers SET tax_payable = tax_payable * 0.99;
END CASE;END;
DECLARE
sal_diff NUMBER;
BEGIN
sal_diff := :NEW.salary - :OLD.salary;
DBMS_OUTPUT.PUT(:NEW.last_name || ': ');
DBMS_OUTPUT.PUT('Old salary = ' || :OLD.salary || ', ');
DBMS_OUTPUT.PUT('New salary = ' || :NEW.salary || ', ');
DBMS_OUTPUT.PUT_LINE('Difference: ' || sal_diff);
END;
8.
CREATE TRIGGER trig1
AFTER INSERT ON T4
REFERENCING NEW AS newRow
FOR EACH ROW
WHEN (newRow.a <= 10)
BEGIN
INSERT INTO T5 VALUES(:newRow.b, :newRow.a);
END trig1;
10.
CREATE TRIGGER instrig INSTEAD OF INSERT ON all_customers
FOR EACH ROW
BEGIN
IF (:new.cust.location = 'SAN_JOSE') THEN
INSERT INTO customers_sj