Saturday, March 10, 2012

Triggers ex : 4 DBMS Lab


Triggers

SQL> create table books1(isbn number(5)primary key,title varchar(25),author varchar(25),price number(7,2),pubyear number(4)); 
Table created. 
SQL> create table stock(isbn number(5)references books(isbn),stkqtty number(7),reorderlvl number(7),reorderqtty number(7)); 
Table created. 
SQL> create table customers(custid number(5)primary key,custname varchar(25),address varchar(30)); 
Table created. 
SQL> create table orders(orderno number(5)primary key,custid number(5)references customers(custid),orderdate date); 
Table created 
SQL> insert into books values(&isbn,'&title','&author',&price,&pubyear);
Enter value for isbn: 4251
Enter value for title: The Scarlet Pimpernal
Enter value for author: Thomas Odissey
Enter value for price: 560
Enter value for pubyear: 1995
old   1: insert into books values(&isbn,'&title','&author',&price,&pubyear)
new   1: insert into books values(4251,'The Scarlet Pimpernal','Thomas Odissey',560,1995) 
1 row created. 
SQL> /
Enter value for isbn: 17854
Enter value for title: The Tempest
Enter value for author: Shakespeare
Enter value for price: 129
Enter value for pubyear: 1886
old   1: insert into books values(&isbn,'&title','&author',&price,&pubyear)
new   1: insert into books values(17854,'The Tempest','Shakespeare',129,1886) 
1 row created. 
SQL> /
Enter value for isbn: 19546
Enter value for title: Harry Potter Series
Enter value for author: J.K.Rowling
Enter value for price: 985
Enter value for pubyear: 2004
old   1: insert into books values(&isbn,'&title','&author',&price,&pubyear)
new   1: insert into books values(19546,'Harry Potter Series','J.K.Rowling',985,2004) 
1 row created. 
SQL> /
Enter value for isbn: 7546
Enter value for title: The Arabian Nights
Enter value for author: Arab philosophers
Enter value for price: 1876
Enter value for pubyear: 1885
old   1: insert into books values(&isbn,'&title','&author',&price,&pubyear)
new   1: insert into books values(7546,'The Arabian Nights','Arab philosophers',1876,1885) 
1 row created. 
SQL> /
Enter value for isbn: 5248
Enter value for title: Julius Caesar
Enter value for author: Shakespeare
Enter value for price: 768
Enter value for pubyear: 1779
old   1: insert into books values(&isbn,'&title','&author',&price,&pubyear)
new   1: insert into books values(5248,'Julius Caesar','Shakespeare',768,1779) 
1 row created. 
SQL> insert into stock values(&isbn,&stkqtty,&reorderlvl,&reorderqtty);
Enter value for isbn: 4251
Enter value for stkqtty: 7000
Enter value for reorderlvl: 12
Enter value for reorderqtty: 150
old   1: insert into stock values(&isbn,&stkqtty,&reorderlvl,&reorderqtty)
new   1: insert into stock values(4251,7000,12,150) 
1 row created. 
SQL> /
Enter value for isbn: 17854
Enter value for stkqtty: 1200
Enter value for reorderlvl: 18
Enter value for reorderqtty: 496
old   1: insert into stock values(&isbn,&stkqtty,&reorderlvl,&reorderqtty)
new   1: insert into stock values(17854,1200,18,496) 
1 row created. 
SQL> /
Enter value for isbn: 19546
Enter value for stkqtty: 1165
Enter value for reorderlvl: 36
Enter value for reorderqtty: 815
old   1: insert into stock values(&isbn,&stkqtty,&reorderlvl,&reorderqtty)
new   1: insert into stock values(19546,1165,36,815) 
1 row created. 
SQL> /
Enter value for isbn: 7546
Enter value for stkqtty: 1350
Enter value for reorderlvl: 78
Enter value for reorderqtty: 95
old   1: insert into stock values(&isbn,&stkqtty,&reorderlvl,&reorderqtty)
new   1: insert into stock values(7546,1350,78,95) 
1 row created.
 
SQL> /
Enter value for isbn: 5248
Enter value for stkqtty: 23
Enter value for reorderlvl: 48
Enter value for reorderqtty: 14
old   1: insert into stock values(&isbn,&stkqtty,&reorderlvl,&reorderqtty)
new   1: insert into stock values(5248,23,48,14) 
1 row created. 
SQL> insert into customers values(&custid,'&custname','&address');
Enter value for custid: 11000
Enter value for custname: Sunitha
Enter value for address: 12, Nethaji Street, Madurai.
old   1: insert into customers values(&custid,'&custname','&address')
new   1: insert into customers values(11000,'Sunitha','12, Nethaji Street, Madurai.') 
1 row created. 
SQL> /
Enter value for custid: 11005
Enter value for custname: Ashok
Enter value for address: 154, K.R.Nagar, Coimbatore.
old   1: insert into customers values(&custid,'&custname','&address')
new   1: insert into customers values(11005,'Ashok','154, K.R.Nagar, Coimbatore.') 
1 row created. 
SQL> /
Enter value for custid: 11501
Enter value for custname: Ashwin
Enter value for address: 176, East street, Erode.
old   1: insert into customers values(&custid,'&custname','&address')
new   1: insert into customers values(11501,'Ashwin','176, East street, Erode.') 
1 row created.
 
SQL> /
Enter value for custid: 12540
Enter value for custname: Sunil
Enter value for address: 90, Rajaji Street, Chidambaram
old   1: insert into customers values(&custid,'&custname','&address')
new   1: insert into customers values(12540,'Sunil','90, Rajaji Street, Chidambaram') 
1 row created. 
SQL> /
Enter value for custid: 14260
Enter value for custname: Uday
Enter value for address: 59, Gandhi Street, Tutucorin.
old   1: insert into customers values(&custid,'&custname','&address')
new   1: insert into customers values(14260,'Uday','59, Gandhi Street, Tutucorin.') 
1 row created. 
SQL> insert into orders values(&orderno,&custid,'&orderdate');
Enter value for orderno: 1701
Enter value for custid: 11000
Enter value for orderdate: 23-FEB-1992
old   1: insert into orders values(&orderno,&custid,'&orderdate')
new   1: insert into orders values(1701,11000,'23-FEB-1992') 
1 row created.
SQL> /
Enter value for orderno: 1654
Enter value for custid: 11005
Enter value for orderdate: 24-MAR-94
old   1: insert into orders values(&orderno,&custid,'&orderdate')
new   1: insert into orders values(1654,11005,'24-MAR-94') 
1 row created. 
SQL> /
Enter value for orderno: 17845
Enter value for custid: 11501
Enter value for orderdate: 12-APR-89
old   1: insert into orders values(&orderno,&custid,'&orderdate')
new   1: insert into orders values(17845,11501,'12-APR-89') 
1 row created. 


SQL> /
Enter value for orderno: 7842
Enter value for custid: 12540
Enter value for orderdate: 9-SEP-96
old   1: insert into orders values(&orderno,&custid,'&orderdate')
new   1: insert into orders values(7842,12540,'9-SEP-96') 
1 row created. 
SQL> /
Enter value for orderno: 5640
Enter value for custid: 14260
Enter value for orderdate: 6-OCT-98
old   1: insert into orders values(&orderno,&custid,'&orderdate')
new   1: insert into orders values(5640,14260,'6-OCT-98') 
1 row created.
 
SQL> select * from books; 
      ISBN TITLE                     AUTHOR                         PRICE          PUBYEAR
---------- ------------------------- ------------------------- ---------- ----------
      4251 The Scarlet Pimpernal     Thomas Odissey                   560                   1995 
     17854 The Tempest               Shakespeare                      129              1886 
     19546 Harry Potter Series       J.K.Rowling                      985              2004
 
      ISBN TITLE                     AUTHOR                         PRICE          PUBYEAR
---------- ------------------------- ------------------------- ----------      ----------
      7546 The Arabian Nights        Arab philosophers               1876                  1885 
      5248 Julius Caesar             Shakespeare                      768                  1779
 
SQL> select * from stock; 
      ISBN    STKQTTY REORDERLVL REORDERQTTY
---------- ---------- ---------- -----------
      4251       7000         12        150
     17854       1200         18         496
     19546       1165         36         815
      7546       1350         78          95
      5248         23         48          14 
SQL> select * from customers; 
    CUSTID CUSTNAME                  ADDRESS
---------- ------------------------- ------------------------------
     11000 Sunitha                   12, Nethaji Street, Madurai.
     11005 Ashok                     154, K.R.Nagar, Coimbatore.
     11501 Ashwin                    176, East street, Erode.
     12540 Sunil                     90, Rajaji Street, Chidambaram
     14260 Uday                      59, Gandhi Street, Tutucorin. 
SQL> select * from orders; 
   ORDERNO     CUSTID  ORDERDATE
---------- ---------- ----------
      1701     11000          23-FEB-1992
      1702      11005          24-MAR-94
     11501      11501          12-APR-89
      1705      12540          9-SEP-96
     11706      14260          6-OCT-98 
SQL> create table orderlist(orderno number(5)references orders(orderno),isbn number(5)references books(isbn),qtty number(5),totprice number(5),shipdate date); 
Table created. 
SQL> create or replace trigger trigger3
  2  before insert on orderlist for each row
  3  declare
  4  qn number(5);
  5  dat date;
  6  begin
  7  select stkqtty into qn from stock where isbn=:new.isbn;
  8  select orderdate into dat from orders where orderno=:new.orderno;
  9  if :new.qtty>qn then
10  dbms_output.put_line('ordered quantity is not available');
11  end if;
12  if months_between(:new.shipdate,dat)<0 then
13  dbms_output.put_line('ordered date is greater than shipment date');
14  end if;
15  end;
16  / 
Trigger created. 
SQL> insert into orderlist values(&orderno,&isbn,&qtty,&totprice,'&shipdate');
Enter value for orderno: 1701
Enter value for isbn: 4251
Enter value for qtty: 36100
Enter value for totprice: 6900
Enter value for shipdate: 09-APR-92
old   1: insert into orderlist values(&orderno,&isbn,&qtty,&totprice,'&shipdate')
new   1: insert into orderlist values(1701,4251,36100,6900,'09-APR-92') 
1 row created.
SQL> /
Enter value for orderno: 1654
Enter value for isbn: 17854
Enter value for qtty: 8795
Enter value for totprice: 520
Enter value for shipdate: 19-JUL-97
old   1: insert into orderlist values(&orderno,&isbn,&qtty,&totprice,'&shipdate')
new   1: insert into orderlist values(1654,17854,8795,520,'19-JUL-97') 
1 row created. 
SQL> /
Enter value for orderno: 7842
Enter value for isbn: 7546
Enter value for qtty: 4520
Enter value for totprice: 320
Enter value for shipdate: 27-SEP-68
old   1: insert into orderlist values(&orderno,&isbn,&qtty,&totprice,'&shipdate')
new   1: insert into orderlist values(7842,7546,4520,320,'27-SEP-68') 
1 row created. 
SQL> /
Enter value for orderno: 5640
Enter value for isbn: 5248
Enter value for qtty: 790
Enter value for totprice: 653
Enter value for shipdate: 12-DEC-96
old   1: insert into orderlist values(&orderno,&isbn,&qtty,&totprice,'&shipdate')
new   1: insert into orderlist values(5640,5248,790,653,'12-DEC-96') 
1 row created. 
SQL> /
Enter value for orderno: 1654
Enter value for isbn: 17854
Enter value for qtty: 17000
Enter value for totprice: 2360
Enter value for shipdate: 18-MAR-94
old   1:  insert into orderlist values(&orderno,&isbn,&qtty,&totprice,'&shipdate')
new   1:  insert into orderlist values(1654,17854,17000,2360,'18-MAR-94') 
1 row created.
 
SQL> select * from orderlist; 
   ORDERNO       ISBN       QTTY   TOTPRICE SHIPDATE
---------- ---------- ---------- ---------- ---------
      7842       7546       7200        620 10-FEB-98
      5640       5248        790        760 19-OCT-97
     17845      19546       9000        680 18-SEP-99
      1654      17854      17000       2360 18-MAR-94 
SQL> create or replace trigger trigger6
  2  after update on books1 for each row
  3  when(new.price>old.price)
  4  begin
  5  update orderlist set totprice=:new.price*qtty where isbn=:new.isbn;
  6  end;
  7  / 
Trigger created. 
SQL> update books1 set price=600 where isbn=7546; 
1 row updated. 
SQL> select * from books; 
      ISBN TITLE                     AUTHOR                         PRICE             PUBYEAR
---------- ------------------------- ------------------------- ----------      ----------
      4251 The Scarlet Pimpernal     Thomas Odissey             560 1995 
     17854 The Tempest               Shakespeare                      129    1886 
     19546 Harry Potter Series       J.K.Rowling                      985    2004
 
      ISBN TITLE                     AUTHOR                         PRICE    PUBYEAR
---------- ------------------------- ------------------------- ----------      ----------
      7546 The Arabian Nights        Arab philosophers               1876      1885 
      5248 Julius Caesar             Shakespeare                      768      1779 
SQL> Create or replace trigger trigger9
  2  After delete on orders for each row
  3  Begin
  4  Delete from orderlist where orderno=:old.orderno;
  5  End;
  6  / 
Trigger created. 
SQL> delete from orders where orderno=1701; 
1 row deleted. 
SQL> select * from orders; 
   ORDERNO     CUSTID ORDERDATE
---------- ---------- ---------
      1654      11005 24-MAR-94
     17845      11501 12-APR-89
      7842      12540 09-SEP-96
      5640      14260 06-OCT-98

No comments:

Post a Comment