Berikut adalah cara membuat trigger pada MySql
untuk memudahkan pembuatan triiger yang mengakses tabel maka perlu dibuatkan 2 tabel sebagai contoh : nama table : Person dan logPerson, dengan isi dan field pada tabel dibawah :
Person
Kode | Nama | Umur |
MB | Mike Bun | 25 |
logPerson
Kode | Nama | Umur | Keterangan |
format :
Delimiter $$
Create Trigger Nama_Trigger
{Before | After} {Insert | Update| Delete }
On Nama_Table
For Each Row
Begin
Kode Sql
End$$
Delimiter ;
Contoh :
Delimiter $$
Create Trigger insertLogPerson After Insert On Person
For Each Row
Begin
Insert logPerson (kode, nama, umur, keterangan) values (new.kode, new.nama, new.umur, 'Insert Penambahan baru');
End $$
Delimiter ;
Menjalankan :
Insert person(kode, nama, umur) values ('JT', 'Johanes Tan', 30);
Hasil :
Persen
Kode | Nama | Umur |
MB | Mike Bun | 25 |
JT | Johanes Tan | 30 |
logPerson
Kode | Nama | Umur | Keterangan |
JT | Johanes Tan | 30 | Insert Penambahan Baru |
-- ini setelah sebelum ada perubahan perseon
Delimiter $$
Create Trigger updateLogPerson Before Update On Person
For Each Row
Begin
Insert logPerson (kode, nama, umur, keterangan) values (old.kode, old.nama, old.umur, 'Simpan data lama sebelum diUpdate');
Insert');
End $$
Delimiter $$
-- ini setelah ada perubahan perseon
Delimiter ;
Create Trigger updateLogPerson After Update On Person
For Each Row
Begin
Insert logPerson (kode, nama, umur, keterangan) values (new.kode, new.nama, new.umur, 'Insert penambahan baru setelah diUpdate');
End $$
Delimiter ;
Menjalankan :
update person set umur 35 where kode = 'JT';
Hasil :
Persen
Kode | Nama | Umur |
MB | Mike Bun | 25 |
JT | Johanes Tan | 35 |
logPerson
Kode | Nama | Umur | Status |
JT | Johanes Tan | 30 | Insert Penambahan Baru |
JT | Johanes Tan | 30 | Simpan data lama sebelum diUpdate |
JT | Johanes Tan | 35 | Insert penambahan baru setelah diUpdate |
Delimiter ;
Create Trigger deleteLogPerson Before Delete On Person
For Each Row
Begin
Insert logPerson (kode, nama, umur, keterangan) values (old.kode, old.nama, old.umur, 'data yang telah dihapus ');
End $$
Delimiter ;
Menjalankan :
Delete from person where kode = 'MB';
Kode | Nama | Umur |
JT | Johanes Tan | 35 |
logPerson
Kode | Nama | Umur | Keterangan |
JT | Johanes Tan | 30 | Insert Penambahan Baru |
JT | Johanes Tan | 30 | Simpan data lama sebelum diUpdate |
JT | Johanes Tan | 35 | Insert penambahan baru karena perubahan lama |
MB | Mike Bun | 25 | data yang telah dihapus |