Membuat Trigger dalam MySQL


Trigger dalam database diartikan sebagai “procedural code that is automatically executed in response to certain events on a particular table or view in a database“. Singkatnya, trigger merupakan sekumpulan perintah atau sintaks yang akan secara otomatis dijalankan jika terjadi operasi tertentu dalam tabel atau view. Trigger digunakan untuk memanggil satu atau beberapa perintah SQL secara otomatis sebelum atau sesudah terjadi proses INSERT, UPDATE atau DELETE dari suatu tabel. Sebagai contoh misalnya kita ingin menyimpan id pelanggan secara otomatis ke tabel ‘log’ sebelum menghapus data di tabel pelanggan.

Di MySQL, Triggers mulai dikenal di versi MySQL 5.0, dan di versi saat ini (5.1.4) fungsionalitasnya sudah bertambah. Pada versi selanjutnya pihak pengembang MySQL berjanji akan lebih menguatkan (menambah) fitur trigger ini.

Trigger sering digunakan, antara lain untuk:

  • Melakukan update data otomatis jika terjadi perubahan. Contohnya adalah dalam sistem penjualan, jika dientri barang baru maka stock akan bertambah secara otomatis.
  • Trigger dapat digunakan untuk mengimplementasikan suatu sistem log. Setiap terjadi perubahan, secara otomatis akan menyimpan ke tabel log.
  • Trigger dapat digunakan untuk melakukan validasi dan verifikasi data sebelum data tersebut disimpan.

Membuat Trigger Baru

Berikut ini bentuk umum perintah untuk membuat triggers:

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

Keterangan dari bentuk umum perintah membuat trigger:

  • name, Nama trigger mengikuti peraturan penamaan variabel / identifier dalam MySQL
  • [BEFORE | AFTER] digunakan untuk menentukan kapan proses secara otomatis akan dieksekusi, sebelum atau sesudah proses.
  • [INSERT | UPDATE | DELETE] digunakan untuk menentukan event (proses) yang dijadikan trigger (pemicu) untuk menjalankan perintah-perintah di dalam triggers.
  • tablename, merupakan nama tabel dimana trigger berada.
  • statement, merupakan sekumpulan perintah atau query yang akan secara otomatis dijalankan jika event / proses yang didefinisikan sebelumnya aktif.

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 pelanggan:

DELIMITER $$

CREATE TRIGGER penjualan.before_insert BEFORE INSERT ON penjualan.pelanggan
FOR EACH ROW BEGIN
INSERT INTO `log` (description, `datetime`, user_id)
VALUES (CONCAT('Insert data ke tabel pelanggan id_plg = ', NEW.id_pelanggan), now(), user());
END;
$$ 

DELIMITER ;

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.

Bentuk umum dan contoh menghapus trigger:

DROP TRIGGER tablename.triggername;

Contoh menghapus trigger bernama ‘before_insert’ yang ada di tabel pelanggan.

DROP TRIGGER penjualan.before_insert;
About these ads
  1. #1 by Top 20 Music Weekly on 7 June, 2013 - 4:11 am

    Key features include the ability to retweet, follow,
    unfollow friends, send direct messages, manage multiple Twitter accounts and so much more.

    Additionally, guitarists should learn as many songs as possible to build their repertoire.

    Tina Turner has earned the title The Queen of Rock ‘n’ Roll for her numerous awards and achievements
    in the rock music genre.

  2. #2 by gannros on 6 September, 2012 - 2:45 pm

    terima kasih gan…sangat membantu saya yg sedng belajar mysql

  3. #3 by Cara Langsing Alami on 10 October, 2011 - 5:19 pm

    What?s Happening i am new to this, I stumbled upon this I’ve discovered It positively useful and it has helped me out loads. I am hoping to contribute & assist other users like its helped me. Great job.

  4. #4 by The Nikon D3100 Camera Review on 28 September, 2011 - 11:32 pm

    I have learn a few good stuff here. Certainly worth bookmarking for revisiting. I wonder how a lot attempt you set to create this kind of magnificent informative site.

  5. #5 by Rina Sihotang on 8 July, 2011 - 11:34 am

    makasih..
    sangat membantu saya..

  6. #6 by baco on 3 May, 2011 - 10:47 am

    apa ini minta2 … usaha ko bos.

  7. #7 by derian rabbani on 2 December, 2010 - 5:39 pm

    om agan boleh tidak saya minta source codenya donk dari awal dari pembuatan table hingga trigger tetapi dalam bentuk .pdf atau word…… soalnya saya baru di mysql mohon bantuannya om agan
    mohon di reply or send email.
    tq om.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 214 other followers

%d bloggers like this: