triggers
DESCRIPTION
TRANSCRIPT
![Page 1: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/1.jpg)
Trigger
Trigger is a statementThis is executed automatically by the
system as a side effect of a modification to the data base.
Example
Atm card, on-line reservation.
![Page 2: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/2.jpg)
Compopnents Trigger Trigger statement: The DML statement(insert,update,delete) is
called the trigger statement. It fires the trigger body.
Trigger body:The pl/sql block that is executed when a
triggering statement is issued is called the trigger body.
Trigger Restriction:This is on optional part. The restriction is
imposed using when clause and is applicable only for row triggers.
![Page 3: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/3.jpg)
Types of trigger
BeforeAfterFor each rowFor each statement(default)
![Page 4: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/4.jpg)
Before/after
The BEFORE (or AFTER) in the trigger definition refers to when you want to run the trigger, either before the actual database modification (update, delete, insert) or after the actual database modification (update, delete, insert).
![Page 5: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/5.jpg)
Row level trigger
for example, when you’re doing an update, you can have a trigger fire once for each thing being updated (if you update 20 rows, the thing would fire 20 times), or you can have it fire just once per statement (if a single update statement is updating 20 rows, the trigger would fire just once) .This is what that for each row in the trigger definition means.
![Page 6: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/6.jpg)
Statement level trigger
Statement level triggers are triggered only once.
![Page 7: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/7.jpg)
Trigger event
Triggers events are events that initiate the trigger action.
InsertUpdatedelete
![Page 8: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/8.jpg)
Built in trigger
CREATE [OR REPLACE]TRIGGER trigger name{BEFORE/AFTER} {SERVER ERROR/LOGON/LOGOFF/SHUTDOWN/STARTUP} ON DATABASE.
begin
pl/sql statements
end;
![Page 9: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/9.jpg)
Server error – trigger will be fired when server error message happens.
Log on trigger will be fired after the client application logs on to the database successfully.
Log off trigger will be fired before the client application
![Page 10: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/10.jpg)
Select * from branch
B_NAME ASSETS B_CITY
north 1200000 chennai
south 500000 bombay
![Page 11: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/11.jpg)
Creating trigger(before)
set serveroutput on create or replace trigger rowins1 before
insert on branch declare x number; begin select count(*) into x from branch; dbms_output.put_line(' number of
available records before insert :' ||x); end;
![Page 12: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/12.jpg)
output
insert into branch values('east',1700000,'delhi');
output:number of available records before
insert :2 1 row created.
![Page 13: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/13.jpg)
select * from branch;
B_NAME ASSETS B_CITY
north 1200000 chennai
south 500000 bombay
east 1700000 delhi
insert into branch values('west',2300000,'banga');number of available records before insert :3 1 row created.
![Page 14: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/14.jpg)
Creating trigger (after)
set serveroutput on create or replace trigger rowins2 after
insert on branch declare x number; begin select count(*) into x from branch; dbms_output.put_line(' number of
available records after insert :' ||x); end;
![Page 15: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/15.jpg)
output
insert into branch values('east',120000,'madurai');
number of available records before insert :4 number of available records after insert :5 1 row created.
alter trigger rowins1 disable; Trigger altered.
insert into branch values('east',1450000,'nellai') number of available records after insert :6 1 row created.
![Page 16: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/16.jpg)
desc dba_triggers;Name Null? Type
OWNER VARCHAR2(30) TRIGGER_NAME VARCHAR2(30) TRIGGER_TYPE VARCHAR2(16)
TRIGGERING_EVENT VARCHAR2(227) TABLE_OWNER VARCHAR2(30)
BASE_OBJECT_TYPE VARCHAR2(16) TABLE_NAME VARCHAR2(30)
COLUMN_NAME VARCHAR2(4000) REFERENCING_NAME
S VARCHAR2(128)
WHEN_CLAUSE VARCHAR2(4000) STATUS VARCHAR2(8)
DESCRIPTION VARCHAR2(4000) ACTION_TYPE VARCHAR2(11)
TRIGGER_BODY LONG
![Page 17: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/17.jpg)
select trigger_name,trigger_body from user_triggers;
TRIGGER_NAME TRIGGER_BODY
ROWINS2 declare x number; begin select count(*) into x from branch; dbms_output.put_line
ROWINS1 declare x number; begin select count(*) into x from branch; dbms_output.put_line
![Page 18: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/18.jpg)
Parts of trigger
Trigger statement Trigger body Trigger restriction
![Page 19: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/19.jpg)
Data base trigger
A database trigger is a stored procedure.
It is fired implicitly when an insert,update or delete statements are issued against the table on which the trigger is defined
![Page 20: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/20.jpg)
Purpose of trigger
To enforce complex integrity constraints.
To enforce complex business rules.
To maintain a replicate table.
To generate data automatically
To avoid invalid transaction
![Page 21: Triggers](https://reader033.vdocuments.site/reader033/viewer/2022061223/54c335ff4a7959712f8b46c8/html5/thumbnails/21.jpg)
Department of CE/ITMSPVL Polytechnic College Pavoorchatram