Kamis, 27 November 2014

[SQL] Contoh membuat Trigger




Pada artikel ini saya akan memberi contoh sederhana membuat Trigger, sebelumnya untuk anda yang belum mengerti apa itu Trigger (bukan trigger sahabat winnie the pooh ya, itu tiger :p ) ,Trigger adalah suatu prosedur yang otomatis terjalankan ketika perintah atau event INSERT,UPDATE atau DELETE (DML statement) dijalankan.

Jika Trigger dibuat pada perintah Insert maka Trigger akan dijalankan ketika ada data baru yang di-input. Sedangkan pada perintah Update, maka Trigger akan dijalankan ketika ada perubahan data dan pada perintah Delete, maka Trigger akan dijalankan ketika ada data/record yang dihapus.

Tujuan pembuatan Trigger
Biasanya Trigger digunakan untuk :
  • Menjaga Integritas data
  • Backup,replikasi atau duplikasi data atau record
  • Logging.



Kondisi atau Waktu (timing) Trigger
Trigger bisa terjalankan pada kondisi atau waktu (timing) sebagai berikut :
  • after (dml_statement) ,trigger dijalankan setelah perintah dml_statement
  • before (dml_statement) , trigger dijalankan sebelum perintah dml_statement
  • instead of , trigger dijalankan pada view



Tipe Trigger juga terbagi dua yaitu:
A. Statement, Trigger akan tetap terjalankan meskipun tidak ada perubahan dan berjalan sekali saja.
     contoh anda menghapus record A pada sebuah tabel dan trigger terjalankan dan anda melakukan
     hapus record A sekali lagi dengan output "no rows deleted", namun trigger akan tetap terjalankan.

B. Row, Trigger terjalankan pada setiap data/record/baris yang terdapat perubahan dan jika tidak ada perubahan maka trigger tidak dijalankan.


Contoh Listing Trigger
Berikut listing untuk membuat Trigger pada user/schema system dengan nama Triggernya yaitu Backup pada tabel Guru .

CREATE OR REPLACE TRIGGER SYSTEM.BACKUP

AFTER DELETE
ON SYSTEM.GURU
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
BEGIN
   INSERT INTO TEMP_GURU
   (
   GURU_ID,
   NAMA,
   GENDER,
   PENDIDIKAN
   )
VALUES (
:old.GURU_ID,
:old.NAMA,
:old.GENDER,
:old.PENDIDIKAN
);
  

   EXCEPTION
     WHEN OTHERS THEN
       -- Consider logging the error and then re-raise
       RAISE;
END BACKUP;
/

Jika anda menghapus data ditabel guru tersebut, maka data yang dihapus akan otomatis tersimpan atau ter-Insert ke tabel temp_guru.Trigger diatas bertujuan untuk mem-backup data guru yang terhapus ke tabel temporary bernama temp_guru.

Semoga Bermanfaat


Artikel ini dibuat oleh Yudha Tri Putra sebagai penulis artikel, diperbolehkan menyalin artikel ini secara utuh tanpa mengubah atau menambah isi artikel.

0 komentar:

Posting Komentar

(C) 2018. Diberdayakan oleh Blogger.

Categories

Followers