DBMS Lab Cycle 8 (Triggers)
--> Create the table STORE, with the fields as given CODE VARCHAR2(15), NAME VARCHAR2(15), QTY NUMBER, PRICE NUMBER Create procedures to perform the following actions into the table STORE.
CREATE TABLE store(
code VARCHAR2(15),
name VARCHAR2(15),
qty NUMBER,
price NUMBER,
PRIMARY KEY(code)
);
BEGIN
INSERT INTO store VALUES(code1,name1,qty1,price1);
DBMS_OUTPUT.PUT_LINE('One row inserted');
END;
/
SET SERVEROUTPUT ON
DECLARE
code VARCHAR2(15);
name VARCHAR2(15);
qty NUMBER;
price NUMBER;
BEGIN
code:=&enter_the_code;
name:=&enter_the_name;
qty:=&enter_the_quantity;
price:=&enter_the_price;
insertrow(code,name,qty,price);
END;
BEGIN
DELETE FROM store WHERE code LIKE code1;
DBMS_OUTPUT.PUT_LINE('One row deleted');
END;
/
SET SERVEROUTPUT ON
DECLARE
code VARCHAR2(15);
BEGIN
code:=&enter_the_code_for_deletion;
deleterow(code);
END;
BEGIN
UPDATE store SET name=name1,qty=qty1,price=price1 WHERE code = code1;
commit;
DBMS_OUTPUT.PUT_LINE('Details of item code ' || code1 ||' updated');
END;
/
--> Phone book table, with fields no int, name varchar(10),dno varchar(10),street varchar(10).
CREATE TABLE phone_book(
no NUMBER(10),
name VARCHAR2(15),
dno VARCHAR2(10),
street VARCHAR2(15),
PRIMARY KEY (no)
);
address VARCHAR2(30);
BEGIN
SELECT name || ',' || dno || ',' || street INTO address FROM phone_book WHERE no = no1;
--DBMS_OUTPUT.PUT_LINE('Address details of phone number' || no1 || 'is' || address);
RETURN address;
END;
/
SET SERVEROUTPUT ON
DECLARE
ph_num NUMBER(10);
res VARCHAR2(50);
BEGIN
ph_num:=&enter_the_Ph_no;
res := searcher(ph_num);
DBMS_OUTPUT.PUT_LINE(res);
END;
/
address VARCHAR2(30);
BEGIN
UPDATE phone_book SET dno=dno1,street=street1 WHERE name = 'Hari';
commit;
DBMS_OUTPUT.PUT_LINE('Details of Hari Updated successfully');
RETURN 0;
END;
/
SET SERVEROUTPUT ON
DECLARE
res number;
BEGIN
res:=updaterhari('dno1','street1');
END;
/
--> Create a DML trigger that uses conditional predicates to determine which of its four possible triggering statements fired it :
A TRIGGER fired when an INSERT, UPDATE OF salary, title OR DELETE of rows is done on he table ‘emp’
CREATE TABLE emp(
empno NUMBER(4,0),
ename VARCHAR2(10),
sal NUMBER(7,2),
title VARCHAR2(30),
PRIMARY KEY(empno)
);
Insert into emp (EMPNO,ENAME,SAL,TITLE) values (1001,'Adharsh',30000,'Manager');
Insert into emp (EMPNO,ENAME,SAL,TITLE) values (1002,'Dimal',90000,'CFO');
Insert into emp (EMPNO,ENAME,SAL,TITLE) values (1003,'Visakh',25000,'Lead');
AFTER INSERT ON emp
FOR EACH ROW
BEGIN
IF INSERTING THEN
DBMS_OUTPUT.PUT_LINE('Inserting');
END IF;
END;
/
AFTER UPDATE OF sal ON emp
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE('Updating Salary');
END;
/
AFTER UPDATE OF title ON emp
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE('Updating Title');
END;
/
AFTER DELETE ON emp
FOR EACH ROW
BEGIN
IF DELETING THEN
DBMS_OUTPUT.PUT_LINE('Deleting');
END IF;
END;
/
CREATE TABLE store(
code VARCHAR2(15),
name VARCHAR2(15),
qty NUMBER,
price NUMBER,
PRIMARY KEY(code)
);
- INSERT record using procedure
BEGIN
INSERT INTO store VALUES(code1,name1,qty1,price1);
DBMS_OUTPUT.PUT_LINE('One row inserted');
END;
/
SET SERVEROUTPUT ON
DECLARE
code VARCHAR2(15);
name VARCHAR2(15);
qty NUMBER;
price NUMBER;
BEGIN
code:=&enter_the_code;
name:=&enter_the_name;
qty:=&enter_the_quantity;
price:=&enter_the_price;
insertrow(code,name,qty,price);
END;
- DELETE record
BEGIN
DELETE FROM store WHERE code LIKE code1;
DBMS_OUTPUT.PUT_LINE('One row deleted');
END;
/
SET SERVEROUTPUT ON
DECLARE
code VARCHAR2(15);
BEGIN
code:=&enter_the_code_for_deletion;
deleterow(code);
END;
- UPDATE record
BEGIN
UPDATE store SET name=name1,qty=qty1,price=price1 WHERE code = code1;
commit;
DBMS_OUTPUT.PUT_LINE('Details of item code ' || code1 ||' updated');
END;
/
--> Phone book table, with fields no int, name varchar(10),dno varchar(10),street varchar(10).
CREATE TABLE phone_book(
no NUMBER(10),
name VARCHAR2(15),
dno VARCHAR2(10),
street VARCHAR2(15),
PRIMARY KEY (no)
);
- Develop a function to search the ‘address’ from the phone book table
address VARCHAR2(30);
BEGIN
SELECT name || ',' || dno || ',' || street INTO address FROM phone_book WHERE no = no1;
--DBMS_OUTPUT.PUT_LINE('Address details of phone number' || no1 || 'is' || address);
RETURN address;
END;
/
SET SERVEROUTPUT ON
DECLARE
ph_num NUMBER(10);
res VARCHAR2(50);
BEGIN
ph_num:=&enter_the_Ph_no;
res := searcher(ph_num);
DBMS_OUTPUT.PUT_LINE(res);
END;
/
- Create a function to update the details of the person with name ‘Hari’
address VARCHAR2(30);
BEGIN
UPDATE phone_book SET dno=dno1,street=street1 WHERE name = 'Hari';
commit;
DBMS_OUTPUT.PUT_LINE('Details of Hari Updated successfully');
RETURN 0;
END;
/
SET SERVEROUTPUT ON
DECLARE
res number;
BEGIN
res:=updaterhari('dno1','street1');
END;
/
--> Create a DML trigger that uses conditional predicates to determine which of its four possible triggering statements fired it :
A TRIGGER fired when an INSERT, UPDATE OF salary, title OR DELETE of rows is done on he table ‘emp’
CREATE TABLE emp(
empno NUMBER(4,0),
ename VARCHAR2(10),
sal NUMBER(7,2),
title VARCHAR2(30),
PRIMARY KEY(empno)
);
Insert into emp (EMPNO,ENAME,SAL,TITLE) values (1001,'Adharsh',30000,'Manager');
Insert into emp (EMPNO,ENAME,SAL,TITLE) values (1002,'Dimal',90000,'CFO');
Insert into emp (EMPNO,ENAME,SAL,TITLE) values (1003,'Visakh',25000,'Lead');
- WHEN INSERTING a row, the trigger should be triggered and should display as `inserting
AFTER INSERT ON emp
FOR EACH ROW
BEGIN
IF INSERTING THEN
DBMS_OUTPUT.PUT_LINE('Inserting');
END IF;
END;
/
- WHEN UPDATING the ‘salary’, the trigger should be triggered and should display as Updating salary
AFTER UPDATE OF sal ON emp
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE('Updating Salary');
END;
/
- WHEN UPDATING title the trigger should be triggered and should display as Updating title .
AFTER UPDATE OF title ON emp
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE('Updating Title');
END;
/
- WHEN DELETING a row THEN the trigger should be triggered and should display as Deleting
AFTER DELETE ON emp
FOR EACH ROW
BEGIN
IF DELETING THEN
DBMS_OUTPUT.PUT_LINE('Deleting');
END IF;
END;
/
Comments
Post a Comment