Saturday, October 20, 2018

Memahami Trigger pada Oracle


Trigger Oracle
Trigger pada dasarnya memiliki kemiripan dengan prosedur yang terdapat dalam oracle. Akan tetapi,
prosedur di jalankan oleh pengguna, applikasi, atau trigger itu sendiri. Sedangkan trigger di jalankan oleh mesin Oracle apabila event yang terdapat dalam trigger tersebut terjadi dan tidak terbatas oleh user yang menggunakan ataupun applikasi yang sedang digunakan.
Fungsi trigger adalah untuk menjaga data agar tetap stabil jika ada perubahan yaitu Insert,Update maupun Delete dan mempermudah perubahan terhadap data ketika terjadi suatu event tertentu.

Beberapa event yang digunakan sebagai pembatasan aturan pemicu adalah :
  1. Perintah DML
  2. Perintah DDL
  3. Beberapa system events, seperti startup, shutdown, dan pesan error lainnya.
Untuk trigger pada event perintah DML, terdapat beberapa event yang dapat digunakan :
  1. Pre – insert 
  2. Post – insert 
  3. Pre – update 
  4. Post – update 
  5. Pre – delete 
  6. Post – delete
Sesuai dengan operasi DML yang ada, maka
Beberapa kegunaan trigger :
  1. Digunakan untuk menyediakan audit trails pada tiap tabel 
  2. Digunakan untuk memberikan nilai pada kolom – kolom tertentu
  3. Mencegah transaksi yang tidak valid
  4. Untuk mendukung beberapa proses bisnis yang kompleks.
  5. Log untuk tiap – tiap event yang ada
 Contoh Trigger pada Oracle :

CREATE TRIGGER total_salary 
AFTER DELETE OR INSERT OR UPDATE OF department_id, salary ON employees
 FOR EACH ROW BEGIN 
  /* assume that department_id and salary are non-null fields */ 
   IF DELETING OR (UPDATING AND :old.department_id != :new.department_id) 
   THEN UPDATE departments
  SET total_salary = total_salary - :old.salary 
  WHERE department_id = :old.department_id; 
   END IF; 
   IF INSERTING OR (UPDATING AND :old.department_id != :new.department_id) 
   THEN UPDATE departments 
    SET total_salary = total_salary + :new.salary 
    WHERE department_id = :new.department_id; 
   END IF; 
   IF (UPDATING AND :old.department_id = :new.department_id AND 
    :old.salary != :new.salary ) 
   THEN UPDATE departments
    SET total_salary = total_salary - :old.salary + :new.salary 
   WHERE department_id = :new.department_id; 
  END IF; 
 END; 


Artikel Terkait

Life with colorful experience


EmoticonEmoticon