Rabu, 11 Oktober 2017

TRIGGER (Basis Data)

TRIGGER


A.    Definisi Trigger

Trigger adalah blok PL/SQL atau prosedur yang berhubungan dengan table, view, skema atau database yang dijalankan secara implicit pada saat terjadi sebuah event.
Trigger dapat pula didefinisikan sebagai objek database yang di asosiasikan dengan sebuah tabel dan akan aktif (terpicu/trigger) ketika sebuah event terjadi pada tabel tersebut Trigger hanya terjadi ketika ada eksekusi INSERT, DELETE, dan UPDATE pada tabel yang bersangkutan Waktu eksekusi trigger yang mungkin terjadi terdiri dari 2 yaitu BEFORE dan AFTER dari statement SQLnya. 
Implementasi trigger yang sering ditemui dalam dunia nyata adalah untuk mengeset dan mengubah nilai kolom dalam suatu tabel sehingga validasi nilai dari tabel tersebut akan terjaga. Adanya trigger dalam database akan meringankan kita dalam pembuatan aplikasi karena di dalam aplikasi yang kita buat kita tidak perlu lagi untuk melakukan validasi data.
Konsep Trigger
·         Trigger adalah object database yang berisi kumpulan perintah SQL yang akan dieksekusi atau dijalankan ketika suatu event terjadi.
·          Dalam satu database kita dapat mendefinisikan lebih dari satu Trigger, asalkan nama dari masing masing trigger berbeda.
·         Trigger harus berasosiasi dengan tabel tertentu sebagai pemicu trigger untuk menentukan kapan trigger tersebut dieksekusi.
·         Trigger memiliki referensi New dan OLD.


B.     Jenis Trigger

Ada 2 jenis trigger yaitu:

·         Application trigger
Terjadi pada saat sebuah kejadian terjadi dengan aplikasi tertentu.
·         Database trigger
Terjadi pada saat terjadi sebuah perubahan data seperti DML pada table (INSERT, UPDATE atau DELETE)

C.    Penggunaan Trigger

Trigger dibuat sesuai dengan keperluan. Ada kalanya trigger perlu dibuat, dan kadangkala tidak perlu dibuat.
Trigger perlu dibuat pada saat :

·         embentuk sebuah aksi tertentu terhadap suatu event
·         Memusatkan operasi global Trigger tidak perlu dibuat, jika :
·         Fungsionalitas yang diperlukan suatu ada pada Oracle server
·         Duplikat atau sama dengan fungsi trigger yang lain.

Prosedur bisa dibuat dalam database, kemudian prosedur tersebut dipanggil pada trigger.  Jika penggunaan trigger terlalu berlebihan, maka akan menyebabkan terjadi sifat ketidaktergantungan yang terlalu kompleks sehingga akan mempersulit pemeliharaan dari aplikasi yang besar.


Pada gambar tersebut, database trigger CHECK_SAL memeriksa nilai gaji pada saat suatu aplikasi mencoba untuk memasukkan baris baru ke dalam table EMPLOYEES. Nilai yang terletak pada jangkauan diluar kategori pekerjaan akan diabaikan.
Sintak penulisan dari database trigger, berisi komponen berikut :
1.      Trigger timing : 
a)      Untuk tabel : BEFORE, AFTER
b)      Untuk view : INSTEAD OF
2.      Trigger event : INSERT, UPDATE atau DELETE
3.      Nama tabel : yaitu nama tabel atau view yang berhubungan dengan trigger
4.      Tipe trigger : Baris atau Pernyataan (statement)
5.      Klausa WHEN : untuk kondisi pembatasan
6.      Trigger body : bagian prosedur yang dituliskan pada trigger


D.    Komponen Trigger

Komponen dari sebuah trigger ada 6 (enam), yaitu : trigger timing, trigger event, nama tabel, tipe trigger, klausa WHEN, dan trigger body.
Berikut ini penjelasan komponen dari trigger. Trigger timing adalah waktu kapan trigger diaktifkan.  Ada tiga macam trigger timing, yaitu :
·         BEFORE : trigger dijalankan sebelum DML event pada tabel
·         AFTER : trigger dijalankan setelah DML event pada tabel
·         INSTEAD OF : trigger dijalankan pada sebuah view.
Trigger event ada 3 kemungkinan : INSERT, UPDATE atau DELETE. Pada saat trigger event UPDATE, kita dapat memasukkan daftar kolom untuk mengidentifikasi kolom mana yang berubah untuk mengaktifkan sebuah trigger (contoh : UPDATE OF salary ... ).  Jika tidak ditentukan, maka perubahannya akan berlaku untuk semua kolom pada semua baris.

Tipe trigger ada 2 macam, yaitu :
·         Statement : trigger dijalankan sekali saja pada saat terjadi sebuah event.  Statement trigger juga dijalankan sekali, meskipun tidak ada satupun baris yang dipengaruhi oleh event yang terjadi.
·         Row : trigger dijalankan pada setiap baris yang dipengaruhi oleh terjadinya sebuah event.  Row trigger tidak dijalankan jika event dari trigger tidak berpengaruh pada satu baris pun.  

Trigger body mendefinisikan tindakan yang perlu dikerjakan pada saat terjadinya event yang mengakibatkan sebuah trigger menjadi aktif.


E.     Keuntungan Trigger

Dalam sebuah tabel dapat mempunyai beberapa trigger. Trigger sangat berguna karena dapat secara otomatis dilaksanakan dalam server, sehingga menyederhanakanpemorgraman, sekaligus menjaga konsistensi informasi dalam database.
Keuntungan penggunaan Trigger antara lain :
a)        Standarisasi (penyeragaman) proses. Trigger dibuat satu kali dan tersimpan dalamdatabase, sehingga semua client yang menggunakan database tersebut sekaligus adalah pengguna Trigger. Dengan demikian seluruh client akan menggunakan operasi yang samaterhadap suatu proses dalam database, karena Trigger yang dipakai sama.
b)        Menyederhanakan pemrograman. Apabila Trigger sudah dibuat dalam database server, seluruh program dalam bahasa apapun, yang mengakses database tersebut akan secara otomatis menggunakan Triger yang ada tanpa perlu membuat perintahnya dalam program
aplikasi.
c)        Mudah diperbaharui. Apabila Trigger pernah di-update dalam database server, semua client akan menggunakan perbaruan yang terakhir
d)        Kecepatan dan efisiensi proses. Oleh karena Trigger disimpan dalam server dalam kode yang sudah terkompilasi, dan dilaksanakan dalam server sehingga lalu-lintas jaringan menjadi berkurang.
e)        Memudahkan kerja secara tim. Apabila Trigger dan Stored Procedure sudah dibuat, anggota tim kerja dapat menggunakan bahasa pemrograman yang berbeda dalam mengaksesnya, karena Trigger disimpan dan dilaksanakan oleh server, tanpa melihat
bahasa pemrograman apa yang dipakai oleh pengguna database.

Manfaat menggunakan trigger:
·         Trigger dapat mengubah nilai kolom pada tabel ini
·         Trigger dapat memperoleh nilai lama dari baris data yang telah dihapus atau diubah.



PENUTUP


Trigger adalah blok PL/SQL atau prosedur yang berhubungan dengan table, view, skema atau database yang dijalankan secara implicit pada saat terjadi  event.
 Tipe dari trigger adalah Application trigger (diaktifkan pada saat terjadi event yang berhubungan dengan sebuah aplikasi) dan database trigger (diaktifkan pada saat terjadi event yang berhubungan dengan data). Trigger dibuat pada saat yang tepat jika diperlukan yaitu untuk membentuk sebuah aksi tertentu terhadap suatu event dan memusatkan operasi global
Penggunaan trigger yang terlalu berlebihan akan menyebabkan terjadi sifat ketidaktergantungan yang terlalu kompleks sehingga akan mempersulit pemeliharaan dari aplikasi yang besar.Trigger berisi komponen-komponen : trigger timing, trigger event, nama tabel, tipe trigger, klausa WHEN dan trigger body.
Beberapa event pada trigger bisa dikombinasikan dalam sebuah trigger dengan menggunakan predikat kondisional INSERTING, UPDATING dan DELETING. Pada Row Trigger, nilai dari kolom sebelum dan sesudah perubahan data dapat dirujuk dengan menggunakan OLD dan NEW qualifier.




1 komentar: