Suatau saat kita membutuhkan sebuah program yang akan otmatis melakukan dua kegiatan sekali gus dengan sakali perintah. Pada contoh kasus adalah saat kita melakukan insert pada penjualan akan otomatis mengurangi stock pada gudang. Saya yakin semua programaer akan bisa melakukan ini, ada kata pepatah mengatakan “banyak jalan menuju Nganjuk”.
Sebelum kita mengatasi masalah ini semari kita sedikit kembali ke tulisan saya yang terdahulu, karena dalam mengatasi masalah ini ada beberapa kebutuhan di MySQL yang akan kita perlukan dalam melakukan program ini, yaitu setting INODB pada MySQL kita jadi terlebih dahulu silakan aktifkan INODB pada MySQL.
Setelah aktif barulah kita bisa menggunkan fasilitas trigger pada MySQL. Ok langsung pada tujuan mari kita mulai proyek kita, pertama – tama kita akan membuat 2 buah tabel untuk percobaan kita
Code :
CREATE TABLE `tbl_pertama` (
`kode` char(2) NOT NULL,
`nama` varchar(20) default NULL,
PRIMARY KEY (`kode`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `tbl_kedua` (
`kode_kedua` char(2) NOT NULL,
`nama_kedua` varchar(20) default NULL,
PRIMARY KEY (`kode_kedua`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Pada dua buah table saya buat sama, agar kita mudah untuk memahami pada proses selanjutnya. Setelah selesai akan tercipta dua buah tabel seperti pada gambar di bawah ini
Gambar 1
Trigger berada pada sebuah table tertentu jadi trigger akan bekerja jika sebuah table mengalami seuatu kejadian, jadi trigger akan bekerja secara otomatis jika sebuah table mengalami proses.
Trigger dapat bekerja BEFORE atau AFTER sebuah tabel mengalami tiga kejadian [Insert, Edit, delete]. Saya harap semua telah mengerti sampai di sini. Trigger dapat berjalan pada saat table mengalami tiga kejadian tersebut [Insert, Edit, delete]. Trigger bukannya bisa melakukan dua proses malah bisa lebih dari satu atau dua proses.
Mari kita buat trigger pada tabel percobaan kita. Pada contoh kasus ini jika kita melakukan pengisian pada tabel pertama makan otomatis tabel kedua akan terisi, begitu juga saat kita melakakukan update dan delete.
Code :
–Untuk proses insert
CREATE TRIGGER `tr_insert` AFTER INSERT ON `tbl_pertama`
FOR EACH ROW
BEGIN
INSERT INTO tbl_kedua values(new.kode, new.nama);
END;
–Untuk proses update
CREATE TRIGGER `tr_update` AFTER UPDATE ON `tbl_pertama`
FOR EACH ROW
BEGIN
update tbl_kedua set kode_kedua=new.kode, nama_kedua=new.nama
where kode_kedua=OLD.kode;
END;
–Untuk proses delete
CREATE TRIGGER `tr_delete` AFTER DELETE ON `tbl_pertama`
FOR EACH ROW
BEGIN
delete from tbl_kedua where kode_kedua=OLD.kode;
END;
Sampai di sini selesai sudah trigger yang kita buat silakan coba dan explorasi. Berikut beberapa hasil dari trigger kita.
Jangan lupa tulis commennya
Website : http://www.mbahsomo.co.cc/