Minggu, 18 Januari 2009

Membuat Trigger di MySQL

Untuk membuat trigger di MySQL and harus mengaktifkan 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.

Gambar 2

4 komentar:

(¯`·._.·[_mbahsomo_]·._.·´¯) mengatakan...

Mas tulis dong sumbernya
http://sugik.do-event.com

vadley mengatakan...

kayak pernah baca di laen tempat.....

langga mengatakan...

Podo Kie bolo ne Mbahsomo kabeh sing komen.... Sumber na g di cantumin lebih parah lagi Jenenge Mbahsomo isik neng kunu iku..... [Sugik]... jiakakakaka....

Unknown mengatakan...

nice....