Cara Membuat Trigger di MySQL Beserta Contohnya

Cara Membuat Trigger di MySQL
Trigger adalah suatu objek database yang merupakan aksi atau prosedur yang terjadi jika terjadi perubahan pada suatu row. Trigger tidak dapat menjadi bagian dari suatu temporary table atau suatu view.

Pembuatan Trigger

Berikut adalah syntax lengkap cara membuat trigger di MySQL:

CREATE
    [DEFINER = { user | CURRENT_USER }]
    TRIGGER trigger_name trigger_time trigger_event
    ON tbl_name FOR EACH ROW trigger_body

Keterangan

  • trigger_name : nama trigger.
  • trigger_time : kapan kita mengeksekusi trigger, apakah sebelum atau sesudah perubahan pada row data table. Jadi pilihannya adalah AFTER atau BEFORE.
  • trigger_event : merupakan event atau peristiwa yang menyebabkan trigger dilakukan. Pilihan event tersebut adalah INSERT, UPDATE, DELETE.
  • tbl_name : nama table.
  • trigger_body : statement-statement perintah SQL yang akan dilakukan. Jika perintahnya lebih dari satu maka gunakan dalam blok statement BEGIN ... END.
  • Jika DEFINER dispesifikasikan maka kita memutuskan trigger tersebut dijalankan hanya oleh user tertentu (dalam format penulisan user@host). Jika tidak dispesifikasikan, maka user yang melakukan perubahan (CURRENT_USER) adalah pilihan default.

Contoh Penggunaan: Trigger After Delete

Berikut adalah contoh penggunaan trigger untuk event setelah penghapusan (AFTER DELETE) pada table "tr_penjualan" - database phi_minimart. Langkah yang akan kita lakukan adalah sebagai berikut:
  • Kita akan membuat satu table audit dengan nama "tr_penjualan_hapus" yang berisi row-row yang dihapus dari table "tr_penjualan" dengan tambahan dua field, yaitu tanggal penghapusan (tgl_perubahan) dan user MySQL yang melakukan hal tersebut (nama_user).

Berikut adalah perintahnya :

USE phi_minimart; 
CREATE TABLE `tr_penjualan_hapus` LIKE `tr_penjualan`; 
ALTER TABLE `tr_penjualan_hapus` ADD
        (
        `tgl_perubahan` DATETIME,
        `nama_user` VARCHAR(200)
        );

  • Tahap berikutnya adalah membuat trigger yang akan melakukan populasi data yang dihapus dari "tr_penjualan" ke table "tr_penjualan_hapus".

Berikut adalah perintahnya :

DELIMITER | 
CREATE TRIGGER hapus_tr_penjualan AFTER DELETE
    ON tr_penjualan FOR EACH ROW
BEGIN
  INSERT INTO tr_penjualan_hapus
        (       tgl_transaksi,
                kode_cabang,
                kode_kasir,
                kode_item,
                kode_produk,
                jumlah_pembelian,
                tgl_perubahan,
                nama_user
        )
  VALUES
        (       OLD.tgl_transaksi,
                OLD.kode_cabang,
                OLD.kode_kasir,
                OLD.kode_item,
                OLD.kode_produk,
                OLD.jumlah_pembelian,
                SYSDATE(),
                CURRENT_USER
        );
END;
|
DELIMITER ;

  • Setelah trigger di atas kita buat, sekarang saatnya kita melakukan pengujian. Coba hapus tiga row data dari table "tr_penjualan" dan lihat efeknya di table "tr_penjualan_hapus".

Jalankan perintah berikut :

DELETE FROM tr_penjualan LIMIT 3;
SELECT * FROM tr_penjualan_hapus;

Hasil Contoh Penggunaan Trigger di Atas di MySQL
Sumber Referensi : http://dev.mysql.com/doc/refman/5.0/en/triggers.html

Source Code dan Contoh Program Pascal lnked list

Source Code dan Contoh Program Pascal lnked list
Source Code dan Contoh Program Pascal lnked list
Disini kita akan membahasa Tentang Program pascal dengan Project lnked list yang akan disajikan pada hari ini, disini saya menyediakan beberapa Hasil Screenshot dari Source Code danContoh Program Pascal lnked list, seperti yang ada pada Judul.

Uses crt;
Type pointer = ^typedata;
     Typedata = record
     Nilai : Integer;
     Berikutnya : pointer;
End;


Var list :pointer;

Procedure mas_dep(var L : pointer; x : Integer);
Var baru : pointer;
Begin
     New(baru);
     Baru^.Nilai:=x;
     Baru^.Berikutnya:= nil;
     If L= nil then L:=baru
     Else
     Begin
          Baru^.berikutnya :=L;
          L:= baru;
     End;
End; 

Procedure cetak (L:pointer);
Var bantu : pointer;
Begin
     Bantu:= L;
     While bantu <> nil do
     Begin
          Write (bantu^.Nilai:3);
          Bantu:=bantu^.Berikutnya;
     End;
End;

Var  bil, bil2 : integer;
     Jwb : char;
Begin
     Clrscr;
     New(list);
     List:=nil;
     Writeln ('Program linked List');
     Writeln;
     Writeln ('  Masuk depan');
     Repeat
     Begin
          Writeln;
          Write ('Masukkan bilangan : ');
          readln(bil);
          mas_dep(list,bil);
          Write ('Lagi [Y/T]  : ');
          readln(jwb);
     End;
     Until jwb='T';
     Write('Hasil : '); 
     Cetak(list);
     Writeln;
     Readln;
End.

Ini dia Contoh Program nya yang sedang berjalan dalam Screenshot :
  1. Input bilangan pertama.
  2. Source Code danContoh Program Pascal lnked list
    Screenshot Tampilan Pertama
  3. Input bilangan kedua.
  4. Source Code danContoh Program Pascal lnked list
    Screenshot Tampilan Kedua
  5. Input bilangan ketiga.
  6. Source Code dan Contoh Program Pascal lnked list
    Screenshot Tampilan Ketiga
  7. Output Hasil.
  8. Source Code dan Contoh Program Pascal lnked list
    Screenshot Tampilan Keempat

Source Code

Selebihnya »

Kode Program

Selebihnya »