Oracle DBA & All IT » Database, DBA, Function, Oracle, Oracle Tips, Programming, Utilities » Trigger in Oracle
Trigger in Oracle
หลายๆคน อาจจะยังงงงวย ว่า Trigger มีเอาไว้ทำอะไร แล้วทำงานอย่างไร?
วันนี้จึงถือโอกาสหยิบยกมาแนะนำกัน เผื่อมีใครจะนำไปใช้ประโยชน์จากมันได้บ้าง
TRIGGER พูดง่ายๆคือ โปรแกรมๆ นึงที่ผูกติดไว้กับ Table นึง เพื่อจับตาดูเหตุการณ์ที่เกิดขึ้นกับ Table นั้นๆ แล้วถ้าเกิดเหตุการณ์นั้นๆ เราจะให้ทำอะไรต่อไป
เพื่อให้เหตุภาพชัดเจนยิ่งขึ้น เราจะมาดูตัวอย่างด้านล่างกัน
CREATE OR REPLACE TRIGGER Print_salary_changes
BEFORE UPDATE ON Emp_tab
FOR EACH ROW
WHEN (new.Empno > 0)
DECLARE
sal_diff number;
BEGIN
sal_diff := :new.sal – : old.sal;
dbms_output.put('Old salary: ' || : old.sal);
dbms_output.put(' New salary: ' || :new.sal);
dbms_output.put_line(' Difference ' || sal_diff);
END;
/
การทำงานของ Trigger นี้คือเมื่อมีการ Update บน Table Emp_tab เมื่อไรให้แสดงค่า เงินเดือนเก่า,เงินเดือนใหม่ และจำนวนเงินเดือนที่เพิ่มขึ้น
หรือเราสามารถที่จะใช้ Trigger ช่วยในการเก็บ Log ก็ได้เช่น ถ้ามีใครแก้ไขค่า Config ใน Table A ให้ทำการ เก็บ Log การแก้ไข ค่าเก่า และ ค่าใหม่ ลงใน Table B
Syntax ในการสร้าง Trigger จะเป็นประมาณด้านล่าง
create trigger trigger-name before event
create trigger trigger-name after event
create trigger trigger-name instead of event
Event คือเหตุการณ์ที่เกิดขึ้น จะมีทั้งที่เป็น DML, DDL, Database event ลองมาดูตัวอย่างด้านล่างกันเพื่อความเข้าใจยิ่งขึ้น
DML event
delete on table-name
insert on table-name
update on table-name
update of column-name on table-name
update of column-name-1, column-name-2 on …
delete or insert on table-name
delete or update on table-name
….
DDL event
ddl-event on schema
ddl-event or ddl-event on schema
ddl-event or ddl-event or ddl-event … on schema ddl-event on database schema
ddl-event or ddl-event on database
ddl-event or ddl-event or ddl-event … on database
Database event
database-event on schema database-event or database-event on schema
database-event or database-event or database-event on schema …
database-event on database
database-event or database-event on database
database-event or database-event or database-event on database …
event ที่ databaseสามารถทำได้มีดังนี้:
- Servererror
- logon
- Logoff
- startup
- shutdown
- suspend
ก็หวังว่าพอจะเข้าใจการทำงานของ Trigger ดีขึ้นไม่มากก็น้อยนะคะ ^^
โดยสามารถไปดูวิธีการใช้งาน Trigger ได้เพิ่มเติมที่
http://docs.oracle.com/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm
Related Search:
- trigger oracle คือ
Filed under: Database, DBA, Function, Oracle, Oracle Tips, Programming, Utilities · Tags: after, before, create trigger, oracle, pl/sql, sql, table, trigger, trigger mean