Anda di halaman 1dari 7

PENGGUNAAN TRIGGER

PADA

MYSQL

adiputra ad1.putr4@yahoo.co.id http://www.terusbelajar.wordpress.com

Trigger adalah object database yang berhubungan langsung dengan table dan akan aktif apabila
sesuatu kejadian (event) terjadi pada table tersebut. Lalu apa maksud kejadian (event) pada database ?
Maksudnya adalah suatu proses, dalam hal ini trigger akan terjadi ketika terdapat suatu proses event
INSERT, DELETE, dan UPDATE. Jadi misalnya ada suatu proses query Insert ke table 1 maka
sebelum (BEFORE) atau sesudah (AFTER) suatu proses query Insert dijalankan, Trigger akan beraksi
yang tentunya Trigger harus dihubungkan dengan table 1 tersebut.

Dasar Trigger
Lalu apa sebenarnya kerja Trigger tersebut ? Isi dari kerja Trigger tersebut adalah manipulasi
data (query) namun tidak semua query (SQL) dapat dijalankan oleh Trigger. Ada beberapa batasan
mengenai Trigger, teman bisa liat pada manual MySQL mengenai Restrictions On Store Routines and
Triggers.

Berikut adalah sintax dasar untuk membuat Trigger :


CREATE TRIGGER triggername
[BEFORE|AFTER] [INSERT|UPDATE|DELETE] ON tablename
FOR EACH ROW {statement}

Penjelasannya mungkin dapat teman pahami kalau kita langsung membuat trigger. Contoh
trigger ini saya buat pada database sakila, bila teman belum mempunyai database ini, silahkan
download pada situs resmi MySQL terlebih dahulu.

Contoh disini, sekarang kita akan membuat suatu trigger apabila terdapat proses penambahan
seorang karyawan (table staff) maka sebelumnya catat terlebih dahulu pada table 'staff_creation_log'.
Sebelumnya kita buat terlebih dahulu table 'staff_creation_log'.

Gambar 1

adiputra ad1.putr4@yahoo.co.id http://www.terusbelajar.wordpress.com

Lalu sekarang kita buat trigger untuk menyimpan staff yang baru ditambahkan di table staff ke
table staff_creation_log.

Gambar 2

Lalu setelah itu kita coba terlebih dahulu melakukan proses penambahan staff baru ke table
staff.
Gambar 3

Sekarang kita lihat apakah trigger yang kita buat berjalan dengan baik atau belum.

Gambar 4

adiputra ad1.putr4@yahoo.co.id http://www.terusbelajar.wordpress.com

Terlihat bahwa saat kita hanya melakukan penambahan (Insert) pada table staff, secara tidak
langsung terdapat penambahan pada table staff_creation_log juga. Inilah sederhana kerja Trigger.

Pada gambar 2 saat pendefinisian pembuatan Trigger terdapat code NEW lalu diikuti dengan
nama field suatu table. Misalnya pada gambar 2 adalah NEW.username, maksud code tersebut adalah
saat kita menambahkan ke table staff_creation_log, isi value dari field username di table
staff_creation_log adalah value yang baru dari proses penambahan pada table staff, dalam hal ini
adalah 'adiputra'. Selain itu, kita juga bisa mengambil value lama dari suatu field dengan code OLD,
namun terdapat batasan pada kedua code tersebut (NEW dan OLD) pada tiap proses
(INSERT,UPDATE,DELETE) dalam keadaan Sesudah (AFTER) atau Sebelum (BEFORE).
Waktu

New Field

Old Field

BEFORE INSERT

Semua field yang akan diinsert

Tidak support

AFTER INSERT

Waktu AFTER tidak bisa mengakses NEW

Tidak ada OLD field setelah


diinsert

BEFORE UPDATE

Semua field yang akan diupdate

Tidak support

AFTER UPDATE

AFTER tidak support

Nilai semua field sebelumnya


yang telah di update

BEFORE DELETE

Tidak ada baris baru saat di delete

Before tidak support delete

AFTER DELETE

After tidak support New

Semua field yang sebelumnya


yang telah didelete.

Coba sekarang kita buat Trigger sebelum insert ( BEFORE INSERT ) dengan menggunakan code OLD.
Gambar 5

Terlihat pada gambar 5 bahwa kita tidak dapat mengakses field lama dalam kondisi BEFORE INSERT.
adiputra ad1.putr4@yahoo.co.id http://www.terusbelajar.wordpress.com

Sekarang kita coba menginsertkan dalam kondisi After.


Gambar 6

Gambar 7

Terlihat pada gambar 6 dan gambar 7, pada kondisi AFTER INSERT, kita tidak dapat
mengakses field baik NEW maupun OLD.

Oke,,sekarang kita coba membuat Trigger saat terdapat perubahan pada table staff. Jadi saat
username pada staff diganti, kita simpan username yang lama pada suatu table misalnya
log_update_username_staff. Sebelumnya kita buat terlebih dahulu table log_update_username_staff
Gambar 8

adiputra ad1.putr4@yahoo.co.id http://www.terusbelajar.wordpress.com

Sekarang kita buat Triggernya,


Gambar 9

Jadi Trigger ini hanya akan melakukan kerjanya apabila terjadi proses update pada table staff,
dan sebabnya hanya akan dilakukan apabila terdapat perubahan username pada table staff lalu
username yang lama akan disimpan pada table log_update_username_staff. Staff_id juga disimpan
untuk menjaga keberadaan username yang lama.

Sekarang kita coba ubah username adiputra menjadi indah


Gambar 10

Lihat, kita berhasil menyimpan username lama pada table log_update_username_staff.

adiputra ad1.putr4@yahoo.co.id http://www.terusbelajar.wordpress.com

Menghapus Trigger
Untuk menghapus trigger, kita bisa dengan mudah menggunakan sintax Drop seperti layaknya
kita menghapus sebuah table. Berikut kita akan menghapus trigger before_update_username_staff.

Sedangkan apabila kita ingin mengubah trigger, kita mesti drop terlebih dahulu trigger yang
ada, lalu kita buat lagi trigger yang ingin kita ubah. Saat ini blum ada perintah untuk Alter Trigger.

View Trigger
Untuk melihat trigger apa saja yang telah kita buat, kita dapat menggunakan sintax :

Sampai sini semoga dapat dimengerti ya,,dapet lagi teknik baru dalam dunia per-database-an J

adiputra ad1.putr4@yahoo.co.id http://www.terusbelajar.wordpress.com

Anda mungkin juga menyukai