0% menganggap dokumen ini bermanfaat (0 suara)
126 tayangan

Pengenalan Trigger Pada MySQL

Trigger adalah objek database yang berhubungan dengan tabel dan akan aktif ketika terjadi perubahan data pada tabel melalui proses insert, update, dan delete. Trigger dapat digunakan untuk melakukan manipulasi data tambahan sebelum atau sesudah perubahan data pada tabel utama. Contoh penggunaannya adalah merekam log setiap perubahan data karyawan pada tabel staff.

Diunggah oleh

Ghibran Sasuke
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
126 tayangan

Pengenalan Trigger Pada MySQL

Trigger adalah objek database yang berhubungan dengan tabel dan akan aktif ketika terjadi perubahan data pada tabel melalui proses insert, update, dan delete. Trigger dapat digunakan untuk melakukan manipulasi data tambahan sebelum atau sesudah perubahan data pada tabel utama. Contoh penggunaannya adalah merekam log setiap perubahan data karyawan pada tabel staff.

Diunggah oleh

Ghibran Sasuke
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 7

PENGGUNAAN TRIGGER PADA

MYSQL

adiputra [email protected] 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 [email protected] 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 [email protected] 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 BEFORE INSERT AFTER INSERT New Field Semua field yang akan diinsert Waktu AFTER tidak bisa mengakses NEW Old Field Tidak support Tidak ada OLD field setelah diinsert BEFORE UPDATE AFTER UPDATE Semua field yang akan diupdate AFTER tidak support Tidak support Nilai semua field sebelumnya yang telah di update BEFORE DELETE AFTER DELETE Tidak ada baris baru saat di delete After tidak support New Before tidak support delete 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 [email protected] 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 [email protected] 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 [email protected] 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 [email protected] http://www.terusbelajar.wordpress.com

Anda mungkin juga menyukai