Jumat, 23 Desember 2016

Database Trigger dengan MySQL

Tags

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.

Tiga Timing atau Waktu Pengaktifan Trigger

  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.

Tiga Event yang Dimiliki Trigger

  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 ft: 0px; padding-right: 0px; padding-top: 0px;" title="clip_image042" width="369" /> 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

Artikel Terkait

Blog ini dibuat atas ketertarikan dan minat saya dengan programming, komputer, blogging dan juga sebagai sarana untuk berbagi hal menarik lainnya.

6 comments

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

Silahkan sedot gan... tapi usahakan jangan pake penyedot WC :)

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

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.

EmoticonEmoticon