Triger
Triger
Triger
I. Tujuan
1. Mahasiswa mengetahui dan memahami fungsi Trigger dalam MySQL
2. Mahasiswa dapat membuat Trigger dan menghapus Trigger
Triggers mulai dikenal di versi MySQL 5.0, dan di versi saat ini (5.0.4)
fungsionalitasnya sudah bertambah. Pada versi selanjutnya (5.1) pihak pengembang
MySQL berjanji akan lebih menguatkan (menambah) fitur trigger ini.
Keterangan :
BEFORE | AFTER digunakan untuk menentukan kapan proses secara otomatis akan
dieksekusi, sebelum atau sesudah proses.
INSERT | UPDATE | DELETE digunakan untuk menentukan event yang dijadikan
trigger untuk menjalankan perintah-perintah di dalam triggers.
Statement atau perintah dalam trigger dapat berupa satu perintah saja, dan dapat
juga beberapa perintah sekaligus. Jika terdapat beberapa perintah dalam trigger,
maka gunakan perintah BEGIN dan END untuk mengawali dan mengakhiri perintah.
Di dalam statement trigger, kita dapat mengakses record tabel sebelum atau sesudah
proses dengan menggunakan NEW dan OLD. NEW digunakan untuk mengambil
record yang akan diproses (insert atau update), sedangkan OLD digunakan untuk
mengakses record yang sudah diproses (update atau delete).
Berikut ini contoh trigger yang akan mencatat aktivitas ke tabel log setiap terjadi
proses insert ke tabel penjualan :
1. Kita Kita akan membuat satu audit dengan nama “penjualan_hapus” yang
berisi row – row yang dihapus dari tabel “penjualan” dengan tambahan dua
field, yaitu tanggal penghapusan (tgl_perubahan) dan user MySQL yang
melakukan hal tersebut (nama_user). Berikut adalah perintah nya :
109
mysql> Alter table Penjualan_Hapus add (
-> tgl_perubahan datetime,
-> nama_user varchar(200)
-> );
Query OK, 0 rows affected (0.24 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DELIMITER |
mysql> CREATE TRIGGER hapus_penjualan AFTER DELETE
-> ON Penjualan FOR EACH ROW
-> BEGIN
-> INSERT INTO Penjualan_Hapus
-> (NoJual, NoID,TglJual,Quantity,tgl_perubahan,nama_user
-> )
-> Values
-> ( OLD.NoJual, OLD.NoID, OLD.TglJual, OLD.Quantity, SYSDATE(),
-> Current_User
-> );
-> END
-> |
mysql> DELIMITER ;
3. Setelah trigger diatas kita buat, sekarang saatnya kita melakukan pengujian.
Coba hapus 2 row data dari tabel “penjualan”.
110
5 rows in set (0.00 sec)
Menghapus Trigger
Untuk menghapus trigger, dapat menggunakan perintah DROP TRIGGER dengan
diikuti dengan nama tabel dan nama triggernya. Berikut ini bentuk umum dan contoh
perintah untuk menghapus trigger.
III. Evaluasi
Soal :
1. Buatlah konfigurasi Trigger pada tabel Marketing yang berhubungan dengan
operasi INSERT
2. Buat Konfigurasi Trigger pada tabel Penjualan yang berhubungan dengan
operasi UPDATE
111