Merupakan sekumpulan perintah atau sintaks yang akan secara otomatis dijalankan jika terjadi operasi tertentu dalam table atau view.
Trigger biasanya digunakan untuk memanggil satu atau beberapa perintah SQL secara otomatus sebelum atau sesudah terjadinya proses INSERT, UPDATE dan DELETE.

Kegunaan Trigger :
1. Sebagai pemicu suatu proses
2. Melakukan update data otomatis jika terjadi perubahan
3. Dapat digunakan untuk validasi dan verifikasi data sebelum data tersebut disimpan

Format dasar Trigger

CREATE TRIGGER NamaTrigger
TRIGGERTIME TRIGGEREVENT ( waktu proses BEFORE | AFTER), (event proses I|U|D)
On NamaTabel
For Each Row
Statement (perintah/quey yg akan dijalankan)

Membuat Trigger

CREATE TRIGGER tgL_01
BEFORE INSERT
ON karyawan
For Each Row
INSERT INTO log(noid,nama,jenkel,kota,kodepos,tgllahir,gaji)
VALUES (New.noid, New.nama, New.jenkel,New.kota, New.kodepos, New.tgllahir, New.gaji);

Menghapus Trigger

DROP TRIGGER NamaTabel.NamaTrigger

Trigger Dynamic
Buat terlebih dahulu dua buah tabel dengan nama coba dan coba1, dengan diskrpsi sebagai berikut :

Field
Type
Lenght
Id
Varchar
12
Nama
Varchar
100
Kota
Varchar
100

Trigger Menambah Data

CREATE TRIGGER tambah
AFTER INSERT
On coba
For each row
INSERT INTO coba1(id,nama,kota)
VALUES (new.id, new.nama.new.kota);

Untuk memahami kinerja trigger, kita masukkan penambahan data pada tabel coba :

INSERT INTO coba (id,nama,kota) VALUES (‘1’,’Agus’,’Yogyakarta’)

- Masukkan lima data pada tabel tersebut
- Kemudian lihat isi dari tabel coba dan coba1


Trigger Mengubah Data
Mengubah data menggunakan metode New dan Old
Metode new untuk memasukkan data yang baru, sedangkan Old untuk menentukan sumber lama yang ingin diubah datanya.

Contoh : CREATE TRIGGER ubah
AFTER UPDATE
On coba
For Each Row
UPDATE coba1 SET nama=new.nama, kota-new.kota where id=old.id

Kita lakukan perubahan data :

UPDATE coba SET nama=’Indah’,kota=’Surabaya’, where id=’3’

Kemudian lihat perubahan pada tabel coba1!

Trigger untuk Menghapus Data

CREATE TRIGGER hapus
AFTER DELETE
On coba
For Each Row
DELETE FROM coba1 where id=old.id

Kita lakukan penghapusan data :
DELETE FROM coba where id=’5’

Kemudian lihat isi dari tabel coba1 apakah masih ada data dengan id=’5’ ??

Trigger di dalam Trigger
Biasanya melibatkan sedikitnya 3 buah tabel. Runtutannya adalah sebagai berikut :
- Jika kita melakukan proses terhadap tabel1, maka secara otomastis akan terjadi proses pada tabel2
- Jika tabel2 terjadi proses, maka akan terjadi proses juga terhadap tabel3
- Dst

Buat 1 tabel lagi dengan nama status, kemudian isi 1 fiel saja dalm tabel tersebut. Dengan spesifikasi sebagai berikut :
Field
Type
Lenght
status
Varchar
20

Buat trigger dalam tabel coba :

CREATE TRIGGER tg_01
AFTER INSERT
On coba
For Each Row
INSERT INTO coba1 (id,nama,kota) VALUES (new.id, new.nama, new.kota)

Buat trigger dalam tabel coba1 :

CREATE TRIGGER tg_02
AFTER INSERT
On coba1
For Each Row
INSERT INTO status (status) VALUES (‘insert’)

Tambahkan query :

INSERT INTO coba (id,nama,kota) VALUES (‘5’,’ivan’,’jakarta’)

Kemudian lihat isi dari tabel coba, coba1 dan status.