Membuat data Tetap konsisten dengan SQL Trigger
Sangatlah membantu kita dalam manajemen field database,karana Setiap
terjadi aksi transaksi Input,Update,maupun delete pada suatu table, maka
table yang lain akan berpengaruh berubah juga. gamabaranya seperti ini
kita memiliki table barang dan jual diamna jika kita merubah record
barang yang ada di table barang maka table jual akan ikut berubah juga
.untuk lebih jelasnya silahkan dibaca pada Tulisan ini dibawah ini.
Sebelumya melakukan pengolahan data kita harus dapat merencanakan
suatu data yang dimanipulasi agar selalu konsisten, Nah...! sebelum
masuk kedalam topik bahasan pada tutorial kali ini kita akan mengenal
konsep dasar Trigger dimulai dari pengenalan trigger, pembuatan triger , menampilkan trigger dan menghapus trigger. Sebagai penyerataan dalam praktek tutorial ini saya mengunakan aplikasi database server (MYSQL 5 server) dan boleh mengunakan yang lain ...
Pengenalan Trigger
Apa yang dimaksud dengan trigger tersebut ...? Trigger adalah kumpulan Code/script pernyataan SQL(Structur Query Language) yang akan dieksekusi berdasarkan waktu(time_trigger) dan kejadian(event_trigger) dengan tujuan untuk menjaga konsistensi sesuai dengan pernyataan integritas file yang dituju yang berjalan pada database server (mysql,...,dll). Untuk pemahaman dari pengertian trigger ini dapat dilihat dari cara pembuatan trigger yang dijelaskan dibawah ini .
Pembuatan Trigger
Trigger Diciptakan Dengan Pernyataan CREATE TRIGGER, Seperti :
Keterangan
Name_trigger adalah nama trigger yang akan tercipta dan terkait dengan database yang digunakan saja..!
Time_trigger menyatakan waktu trigger akan dipangil secara otomatis . time_trigger tersebut berupa statement BEFORE yang berarti sebelum atau AFTER yang berarti sesudah
Event_Trigger adalah kejadian yang membuat trigger di panggi secara otomatis.Untuk keterangan Event_trigger dapat dilihat pada table brikut:
Event | Keterangan |
---|---|
INSERT | Trigger akan dijalan kan ketika terdapat operasi penambahan sebuah baris data ke table bersangkutan |
UPDATE | Trigger dijalankan ketika terdapat operasi pengubahan sebuah baris dalam table bersangkutan |
DELETE | Trigger dijalankan ketika terdapat operasi penghapusan baris pada table bersangkutan |
ALIAS PADA TRIGGER
Alias_trigger trigger memiliki alias dengan nama NEW dan OLD
Berikut penjelasan dan pengunaan.
Pengunaan Alias trigger
NEW.nama_kolom
OLD.nama_kolom
Penjelasan :
NEW.nama_kolom menyatakan nilai nama_kolom sebelum dihapus(delete) atau diubah(update)OLD.nama_kolom menyatakan nilai nama_kolom setelah diubah(update) atau setelah data baru dimasukkan(insert).
<!-- Lanjut-->
Melihat Daftar Trigger
Untuk melihat daftar triggers yang dibuat dapat mengunakan perintah berikut ini :
SHOW triggers ;
Menghapus Trigger
Untuk Menghapus Trigger daftar triggers yang dibuat dapat mengunakan perintah berikut ini :
DROP TRIGGER [nama_database.]nama_trigger ;
Praktekan
Selanjutnya dalam prakteknya kita membutuhkan satu database dan beberapa table pada contoh ini table yang digunakan yaitu barang dan jual, dapat dilihat dari relation table pada gambar ERD dibawah ini :
Sedikit keterangan untuk gambar diatas menjelaskan satu kode jenis barang memiliki banyak penjualan contoh layaknya sebuah mini market yang tiap harinya melakukan transaksi penjualan barang dimana barang dijual berdasarkan jenis dan nama barang tersebut. Umpamakan sia A membeli sebuah odol yang bernama pepsoden dan si B membeli Odol bernama Close-up,maka akan terjadi suatu transaksi penjualan dua Odol yang berbeda namanya.dan dapat disimpulkan satu jenis barang dapat menjual banyak nama atau disebut juga (one-to-many) .
Berikut Sousescript SQL dari table barang dan jual
CREATE TABLE `barang` (
`kd_barang` int(10) NOT NULL,
`jenis_barang` varchar(35) NOT NULL,
`nama_barang` varchar(50) NOT NULL,
`stock` int(15) NOT NULL,
PRIMARY KEY (`kd_barang`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `barang` (`kd_barang`, `jenis_barang`, `nama_barang`, `stock`) VALUES (111, 'Odol', 'Close-up', 12), (112, 'Mie', 'Supermi', 18), (113, 'Odol', 'Pepsoden', 12); CREATE TABLE `jual` ( `kd_jual` int(12) NOT NULL auto_increment, `kd_barang` int(12) NOT NULL, `jumlah` int(11) NOT NULL, `harga` int(11) NOT NULL, `total` int(11) NOT NULL, PRIMARY KEY (`kd_jual`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Setelah table Barang dan Jual telah tercipta didalam sebuah databases maka tahapan selanjutnya adalah melihat isi table masing-masing dengan perintah :
Select * from barang ;
Select * from jual ;
INSERT INTO `jual` ( `kd_barang`, `jumlah`, `harga`, `total`) VALUES (111, 1, 3000, 3000);
Select * from barang ;
Kasus :
barang berkurang secara otomatis setiap terjadi penjualan..?
Jawab: Solusinya adalah mengunakan sourcecode TRIGGERs berikut scriptnya:
Nama trigger = stock_barang
DELIMITER //
CREATE TRIGGER stock_barang
AFTER INSERT ON jual
FOR EACH ROW
BEGIN
UPDATE barang SET stock=stock-new.jumlah where kd_barang=new.kd_barang ;
END ;
//
DELIMITER ;
Nah...! pada langkah selanjutnya inputkan data penjualan :
INSERT INTO `jual` (`kd_barang`, `jumlah`, `harga`, `total`)
VALUES(111, 2, 4000, 8000);
Select * from barang ;
Penjelasan dari trigger diatas adalah trigger dibuat dengan nama stock_barang dimana operasi suatu baris akan dilakukan setelah(After) terjadi penginput-an data pada table penjualan dengan eksekusi file stok pada table barang akan dikurangkan dengan jumlah barang baru yang di jual dengan syarat dari kode barang pada table barang sama dengan kode barang pada table jual.
Sumber