Database Trigger dengan MySQL


A. PENGERTIAN TRIGGER
Trigger jika diartikan secara bahasa sederhana yaitu suatu pemicu, jika secara istilah trigger merupakan prosedur yang berhubungan dengan table, view, skema atau database yang dijalankan secara implicit pada saat terjadi sebuah event. Trigger diaktifkan berdasarkan waktu yang diinginkan trigger itu bekerja yang biasa disebut dengan Trigger Timing.
Trigger Timing memiliki 3 timing atau waktu pengaktifan trigger, yaitu:
  1. BEFORE: Trigger dijalankan sebelum DML event pada tabel.
  2. AFTER: Trigger dijalankan setelah DML event pada tabel.
  3. INSTEAD OF : Trigger dijalankan pada sebuah view.
Sedangkan untuk Trigger itu sendiri memiliki 3 event yaitu:
  1. INSERT : berfungsi untuk memasukkan/menginput data ke dalam tabel, fungsi insert disini jika tabel pertama diinput data yang diinginkan, maka secara auto data tersebut akan masuk/merubah ke tabel kedua.
  2. UPDATE: pada trigger berfungsi sebagai mana Edit, jika data pada tabel pertama diupdate makan akan secara otomatis tabel kedua juga akan terupdate sesuai dengan data yang diupdate.
  3. DELETE: Sama seperti perintah trigger sebelumnya, Delete berfungsi menghapus data pada tabel, dan jika tabel pertama dihapus makan pada tabel kedua juga akan secara automatis mengubah data yang di delete.
Hasil penulisan dari sebuah Trigger akan menimbulkan efek manipulasi database secara otomatis sesuai dengan yang kita inginkan. Misalnya, setelah insert pada tabel_a dan kolom a1 maka akan otomatis insert pada tabel_b pada kolom b1. Begitu pula untuk aksi update dan delete.
B. MENGGUNAAN TRIGGER
1. Pembuatan Trigger
Pernyataan CREATE TRIGGER digunakan untuk membuat trigger, termasuk aksi apa yang dilakukan saat trigger diaktifkan.
Sintak:
CREATE [DEFINER = { user | CURRENT_USER }] TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt
Keterangan :
· [DEFINER = { user | CURRENT_USER }]: Definisi user yang sedang aktif, sifatnya opsional.
· trigger_name: Nama trigger.
· trigger_time: waktu menjalankan trigger. Ini dapat berupa BEFORE atau AFTER.
· trigger_event: berupa kejadian yang akan dijalankan trigger.
· tbl_name: Nama tabel yang berasosiasi dengan trigger.
· trigger_stmt: Statemen (tunggal atau jamak) yang akan dijalankan ketika trigger aktif.
Sebagai contoh kasus penggunaan trigger adalah mencatat kejadian-kejadian yang terjadi beserta waktunya pada tabel mahasiswa, dan catatan-catatan tadi disimpan dalam tabel yang lain, misal log_mahasiswa. Misalkan struktur tabel log_mahasiswa adalah sebagai berikut.
clip_image003
clip_image004
Contoh 1:
Isi record sebelumnya pada tabel tbl_mahasiswa dan log_mahasiswa sebagai berikut:
clip_image006
clip_image007
Kemudian buat trigger dengan nama ins_mhs yang akan melakukan event insert secara otomatis ke tabel log_mahasiswa ketika kita melakukan event insert pada tabel tbl_mahasiswa.
clip_image009
Lakukan insert ke tabel tbl_mahasiswa
clip_image011
Untuk melihat hasilnya tampilkan tabel log_mahasiswa
clip_image012
Dari contoh diatas dapat dilihat bahwa ketika satu record pada tabel tbl_mahasiswa disisipkan (insert), maka secara otomatis tabel log_mahasiswa akan disisipkan satu record, yaitu kejadian ‘Tambah data’ dan waktu saat record pada tabel mahasiswa disisipkan.
Contoh 2:
Membuat trigger dengan nama update_mhs yang akan melakukan event insert secara otomatis ke tabel log_mahasiswa ketika kita melakukan event update pada tabel tbl_mahasiswa.
clip_image014
Lakukan update pada tabel tbl_mahasiswa
clip_image015
Untuk melihat hasilnya tampilkan tabel log_mahasiswa
clip_image016
Dari contoh diatas dapat dilihat bahwa ketika satu record pada tabel tbl_mahasiswa diperbaharui (update), maka secara otomatis tabel log_mahasiswa akan disisipkan satu record, yaitu kejadian ‘Ubah Data’ dan waktu saat record pada tabel tbl_mahasiswa diperbaharui.
2. Keyword OLD dan NEW
Untuk merujuk ke kolom-kolom tabel yang diasosiasikan dengan trigger, kita menggunakan keyword OLD dan NEW. Keyword OLD mengacu pada nilai lama, sedangkan NEW merepresentasikan nilai baru. Di trigger INSERT, kita hanya dapat menggunakan keyword NEW karena tidak ada data lama.
Contoh berikut memperlihatkan penggunaan keyword NEW pada trigger INSERT.
clip_image018
Isi record sebelumnya pada tabel tbl_barang.
clip_image019
Melakukan operasi Insert pada tabel tbl_pembelian.
clip_image020
Perubahan isi record pada tabel tbl_barang setelah dilakukan insert pada tabel tbl_pembelian.
clip_image021
Dari contoh di atas dapat dilihat bahwa ketika insert pada tabel tbl_pembelian dengan kode barang B002 (Teh Pucuk) dengan jumlah beli 3 buah, maka pada tabel tbl_barang yang mula-mulanya stok pada barang dengan kode B002 adalah 67 sekarang stoknya menjadi 70 setelah ditambah dengan jumlah beli pada tabel tbl_pembelian.
Untuk kasus trigger DELETE, keyword yang bisa digunakan hanya OLD. Misalkan kita ingin mendefinisikan trigger untuk menghapus semua data pembelian manakala data barang yang sesuai diindikasikan melalui primary key dan foreign key dihapus.
clip_image023
Isi record sebelumnya pada tabel tbl_pembelian.
clip_image024
Melakukan operasi DELETE pada tabel tbl_barang
clip_image025
Isi record pada tabel tbl_pembelian setelah dilakukan operasi delete pada tabel tbl_barang.
clip_image026
Dari contoh kasus di atas ketika melakukan operasi delete pada tabel tbl_barang dengan kode barang B001 maka pada tabel tbl_pembelian yang berisi kode barang yang sama dengan kode barang barang yang dihapus pada tabel tbl_barang yakni B001 akan otomatis dihapus juga.
Khusus untuk operasi UPDATE, kita bisa memanfaatkan keyword NEW maupun OLD.
clip_image028
Isi record sebelumnya pada tabel tbl_barang dan tbl_pembelian.
clip_image029
clip_image030
Lakukan operasi UPDATE pada tabel tbl_pembelian
clip_image031
Untuk melihat hasilnya tampilkan lagi tabel tbl_barang
clip_image032
Dari contoh kasus di atas dapat kita lihat setelah pada tabel tbl_pembelian dilakukan operasi UPDATE pada record dengan kode barang B002 yang mula-mulanya jumlah beli dari 3 buah diganti atau di update menjadi 10 buah, maka secara otomatis pada tabel tbl_barang dengan kode barang yang sama yakni B002 juga mengalami update yang mula-mulanya stoknya 70 buah menjadi 77 buah.
3. TRIGGER KOMPLEKS

Keberadaan trigger secara nyata mampu mengatasi berbagai persoalan pelik, misalnya berkaitan dengan integritas atau audit data. Ini tentu sangat masuk akal, karena trigger juga bisa mengandung pernyataan-pernyataan yang kompleks termasuk percabangan, pengulangan, fungsi-fungsi agregat, bahkan kode pemanggilan prosedur.
Sebagai ilustrasi sederhana, kita bisa mendefinisikan trigger untuk memeriksa operasi update pada tabel tbl_barang maka pada tabel status_barang akan mengalami penambahan record yakni ketika stok tabel tbl_barang adalah 0 dan akan dihapus jika tidak stok tidak sama dengan 0.
Buat trigger dengan nama sts_brg.
clip_image034
Isi record sebelumnya pada tabel tbl_barang dan status_barang
clip_image035
clip_image036
Lakukan operasi update pada tabel tbl_barang.
clip_image038
Untuk melihat hasil dari trigger tersebut silahkan tampilkan tabel status_barang.
clip_image039
Kemudian lakukan operasi update kembali dengan kode barang yang sama ubah stoknya menjadi bukan 0 lagi misalnya stoknya menjadi 90.
clip_image041
Kemudian lihat lagi hasilnya dengan menampilkan tabel status_barang
clip_image042
Dari contoh di atas dapat kita lihat bahwa ketika stok pada tabel di update menjadi 0 maka pada tabel status barang akan mengalami operasi insert dan ketika di update lagi menjadi 90 maka recordnya akan dihapus.
Sumber:
· elektro.um.ac.id/wp-content/uploads/2016/05/Modul-6-Trigger.pdf
· ariv.lecturer.pens.ac.id/Database%202/T13%20-%20Database%20Trigger.pdf
· http://pusat-bahasa.info/relo/download/119542039mohriyan-MySQL2.pdf

6 komentar:

  1. I've used AVG security for a couple of years, I would recommend this Anti virus to all of you.

    BalasHapus
  2. Balasan
    1. Silahkan sedot gan... tapi usahakan jangan pake penyedot WC :)

      Hapus
  3. Permisi numpang liwat yah gan...........
    1 ID All in One Games Support Android,Blackberry dan iOS,Ajak Temanmu Bermain Bersama Dan Menangkan Jackpotnya,NantikanEvent & BonusYang Menarik Menanti Anda Hanya Di WWW.988POKER.CO
    Poker Texas>>Live Poker>>Domino QQ>>Bandar Ceme>>BlackJack>>Capsa Susun Online
    =======>988POKER
    =======>DAFTAR SEKARANG JUGA
    =======>Agen Judi Online
    =======>Poker Texas
    =======>Domino QQ
    =======>Bandar Ceme
    =======>BlackJack
    =======>Capsa Susun
    >>>>>>>>Anies Sandi
    >>>>>>>>Berita Jakarta
    >>>>>>>>Lantai 7 Alexis
    >>>>>>>>Ahok-Djarot
    >>>>>>>>Setya Novanto
    Menangkan Hadiah - Hadiahnya Tiap Minggu !!!
    Info Lebih lanjut bisa menghubungi kami melalui :
    Fanpage Facebook : 988POKER
    SMS : 0812-91-8888-08
    WhatsApp : 0812-91-8888-08
    BBM : D62477FB
    LINE : 988bet
    Instagram : 988poker

    BalasHapus
Catatan:
Untuk menyisipkan video, gunakan tag <i rel="youtube">URL YOUTUBE ANDA...</i>
Untuk menyisipkan gambar, gunakan tag <i rel="image">URL GAMBAR ANDA...</i>
Untuk menyisipkan kode, gunakan tag <i rel="code">KODE ANDA...</i>
Untuk menyisipkan kode panjang, gunakan tag <i rel="pre">KODE ANDA...</i>
Untuk menyisipkan catatan, gunakan tag <b rel="quote">CATATAN ANDA...</b>
Untuk menciptakan efek tebal gunakan tag <strong>TEKS ANDA...</strong>

NB: Jika ingin menuliskan kode pada komentar harap gunakan Tool untuk mengkonversi kode tersebut agar kode bisa muncul dan jelas atau gunakan tool dibawah "Konversi Kode di Sini!"

Jika ingin menuliskan komentar yang keluar dari topik pada artikel ini silahkan kehalaman OOT (out of topic) dengan menekan tombol OOT di bawah ini.

Konversi Kode di Sini!OOT

 
Design by Juned al~Bughisy Copyright © 2012 ~ 2013 Powered by Blogger
Back to Top