1.9 KiB
1.9 KiB
P10 - Trigger
Problem Statement: Trigger: Write a after trigger for Insert, update and delete event considering following requirement: Emp(Emp_no, Emp_name, Emp_salary) a) Trigger should be initiated when salary tried to be inserted is less than Rs.50,000/- b) Trigger should be initiated when salary tried to be updated for value less than Rs. 50,000/- Also the new values expected to be inserted will be stored in new table Tracking(Emp_no,Emp_salary).
Creating tables:
CREATE TABLE Emp(
Emp_no NUMBER(14),
Emp_name VARCHAR(255),
Emp_salary NUMBER(14)
);
CREATE TABLE Tracking(
Emp_no NUMBER(14),
Emp_salary NUMBER(14)
);
Trigger
CREATE OR REPLACE TRIGGER P10
AFTER INSERT OR UPDATE ON Emp
FOR EACH ROW
BEGIN
IF inserting THEN
IF (:New.Emp_salary < 50000) THEN
insert into Tracking (Emp_no, Emp_salary) VALUES (:New.Emp_no, :New.Emp_salary);
DBMS_OUTPUT.PUT_LINE('Inserting record with salary < 50000');
END IF;
ELSIF updating THEN
IF (:New.Emp_salary < 50000) THEN
UPDATE Tracking SET Emp_salary = :New.Emp_salary WHERE Emp_no = :Old.Emp_no;
DBMS_OUTPUT.PUT_LINE('Updated value of salary < 50000 for a record');
END IF;
END IF;
END;
/
- After performing insertion operation:
INSERT INTO Emp VALUES (1, 'Tanmay', 45000);
INSERT INTO Emp VALUES (2, 'Rajesh', 35000);
Output
1 row(s) inserted.Inserting record with salary < 50000
1 row(s) inserted.
Inserting record with salary < 50000
Tracking:
EMP_NO EMP_SALARY
1 45000
2 35000
- After performing update operation:
UPDATE Emp SET Emp_salary = 43000 WHERE Emp_no = 1;
Output
1 row(s) updated.Updated value of salary < 50000 for a record
Tracking:
EMP_NO EMP_SALARY
1 43000
2 35000