Pendahuluan
Trigger adalah suatu objek database yang merupakan aksi atau
prosedur yang dilakukan jika terjadi perubahan pada row data suatu table.
Trigger tidak dapat menjadi bagian dari temporary table atau view.
Beberapa contoh penggunaan trigger yang sangat berguna
adalah jika kita ingin melakukan kalkulasi tertentu yang tidak perlu
"diketahui" aplikasi luar, mencatat aktivitas operasi table
misalkan untuk kepentingan change data capture (CDC),
dan lain-lain.
Kita dapat membuat trigger dengan perintah CREATE TRIGGER.
Berikut adalah syntax lengkapnya :
CREATE
[DEFINER = { user | CURRENT_USER }] TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_body
Keterangan :
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 yaitu OLD dan NEW.
Sesuai namanya, OLD digunakan untuk referensi sebelum
perubahan dan NEW untuk referensi sesudah perubahan.
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 :
USE phi_minimart;
CREATE TABLE `tr_penjualan_hapus` LIKE `tr_penjualan`; ALTER TABLE `tr_penjualan_hapus` ADD ( `tgl_perubahan` DATETIME, `nama_user` VARCHAR(200) );
DELIMITER |
CREATE TRIGGER hapus_tr_penjualan AFTER DELETE ON tr_penjualan FOR EACH ROW BEGIN INSERT INTO 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 ;
DELETE FROM tr_penjualan LIMIT 3;
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.
|
0 komentar:
Posting Komentar