Membuat Trigger Mysql


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   
MBMike Bun    25
JT             Johanes Tan30          

logPerson

Kode               Nama Umur  Keterangan  
JTJohanes 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   
MBMike Bun        25
JT             Johanes Tan    35         

logPerson

Kode               Nama        Umur        Status
JTJohanes Tan      30      Insert  Penambahan Baru
JTJohanes Tan      30     Simpan data lama sebelum diUpdate  
JTJohanes 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