How To Create Trigger In Mysql
Pendahuluan
Trigger adalah suatu objek database yang merupakan aksi atau prosedur yang terjadi jika terjadi perubahan pada suatu row. Trigger tidak dapat menjadi bagian dari suatu temporary table atau suatu view.
Pembuatan Trigger
Berikut adalah syntax lengkap cara membuat trigger di MySQL:
CREATE
[ DEFINER={user|CURRENT_USER} ]
TRIGGERtrigger_name trigger_timetrigger_event
ONtbl_name FOR EACH ROWtrigger_body
Keterangan
- trigger_name : nama trigger.
- trigger_time : kapan kita mengeksekusi trigger, apakah sebelum atau sesudah perubahan pada row data table. Jadi pilihannya adalahAFTER atauBEFORE.
- trigger_event : merupakan event atau peristiwa yang menyebabkan trigger dilakukan. Pilihan event tersebut adalahINSERT,UPDATE,DELETE.
- tbl_name: nama table.
- trigger_body:statement-statement perintah SQL yang akan dilakukan. Jika perintahnya lebih dari satu maka gunakan dalam blok statementBEGIN ... END.
- JikaDEFINERdispesifikasikan maka kita memutuskan trigger tersebut dijalankan hanya oleh user tertentu (dalam format penulisanuser@host). Jika tidak dispesifikasikan, maka user yang melakukan perubahan (CURRENT_USER) adalah pilihandefault.
Referensi "OLD" dan "NEW"
Karena trigger digunakan pada saat terjadi perubahan row data, maka kita perlu referensi ke row sebelum dan sesudah perubahan. Untuk ini ada dua alias yang berfungsi untuk hal tersebut yaituOLD danNEW.
Sesuai namanya, OLD digunakan untuk referensi sebelum perubahan dan NEW untuk referensi sesudah perubahan.
Contoh Penggunaan: Trigger After Delete
Berikut adalah contoh penggunaan trigger untuk event setelah penghapusan (AFTER DELETE) pada table "tr_penjualan" - database phi_minimart. Langkah yang akan kita lakukan adalah sebagai berikut :
- Kita akan membuat satu table audit dengan nama "tr_penjualan_hapus" yang berisi row-row yang dihapus dari table "tr_penjualan" dengan tambahan dua field, yaitu tanggal penghapusan (tgl_perubahan) dan user MySQL yang melakukan hal tersebut (nama_user).
Berikut adalah perintahnya :
USE phi_minimart;
CREATETABLE`tr_penjualan_hapus`LIKE`tr_penjualan` ;
ALTERTABLE`tr_penjualan_hapus`ADD
(
`tgl_perubahan`DATETIME ,
`nama_user`VARCHAR (200)
) ;
- Tahap berikutnya adalah membuat trigger yang akan melakukan populasi data yang dihapus dari "tr_penjualan" ke table "tr_penjualan_hapus".
Berikut adalah perintahnya :
DELIMITER |
CREATETRIGGER hapus_tr_penjualanAFTERDELETE
ON tr_penjualanFOR EACH ROW
BEGIN
INSERTINTO tr_penjualan_hapus
( tgl_transaksi,
kode_cabang,
kode_kasir,
kode_item,
kode_produk,
jumlah_pembelian,
tgl_perubahan,
nama_user
)
VALUES
( OLD.tgl_transaksi,
OLD.kode_cabang,
OLD.kode_kasir,
OLD.kode_item,
OLD.kode_produk,
OLD.jumlah_pembelian,
SYSDATE ( ) ,
CURRENT_USER
) ;
END ;
|
DELIMITER;
- Setelah trigger di atas kita buat, sekarang saatnya kita melakukan pengujian. Coba hapus tiga row data dari table "tr_penjualan" dan lihat efeknya di table "tr_penjualan_hapus".
Jalankan perintah berikut :
DELETEFROM tr_penjualanLIMIT3 ;
SELECT*FROM tr_penjualan_hapus;
Terlihat pada gambar di atas 3 row yang dihapus telah "pindah" ke table "tr_penjualan_hapus" dengan tambahan informasi waktu penghapusan dan user yang menghapus. - Selesai.
Jika ada yang kurang jelas dari artikel ini, Anda dapat menanyakan di user group facebook kami.
Sumber Referensi
- http://dev.mysql.com/doc/refman/5.0/en/triggers.html
How To Create Trigger In Mysql
Source: http://mysql.phi-integration.com/sql/membuat-trigger-di-mysql
Posted by: robinsonsciespoins.blogspot.com

0 Response to "How To Create Trigger In Mysql"
Post a Comment