Articles Comments

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สามารถทำได้มีดังนี้:

ก็หวังว่าพอจะเข้าใจการทำงานของ Trigger ดีขึ้นไม่มากก็น้อยนะคะ ^^

โดยสามารถไปดูวิธีการใช้งาน Trigger ได้เพิ่มเติมที่
http://docs.oracle.com/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm

.. Preview : 7964

Related Search:

  • trigger oracle คือ

Written by

บอกเล่าสิ่งที่พบเจอมาในการทำงาน ประสบการณ์การทำงานด้าน DBA ถ่ายทอดกันด้วยภาษาง่ายๆ บ้านๆ " ทุกอย่างไม่อยาก แต่... แค่ตั้งใจไม่พอ ต้องลงมือทำ และทำ GoodLuck " Fanpage: www.facebook.com/DBAor .. "Oracle Database Consultant " ..

Filed under: Database, DBA, Function, Oracle, Oracle Tips, Programming, Utilities · Tags: , , , , , , , ,