TRIGGER
M. Maksudin Al Mubarok_ 22.02.0.0032
Ikhya Sebastian Afriza_ 22.02.0.0035
Via Enggar Saputra_ 22.02.0.0022
DEFINISI TRIGGER
Trigger adalah sebuah objek database yang
diasosiasikan dengan sebuah tabel dan akan
aktif (terpicu/trigger)ketika sebuah event
terjadi pada tabel tersebut
Trigger hanya akan terjadi ketika ada eksekusi
(insert, delete dan update) pada tabel yang
bersangkutan
Waktu eksekusi trigger yang mungkin terjadi
terdiri dari 2 yaitu before dan after dari
statement sql-nya
Ada 2 jenis trigger yaitu :
Application trigger: Terjadi pada saat sebuah
kejadian terjadi dengan aplikasi tertentu.
Database trigger : Terjadi pada saat terjadi
sebuah perubahan data seperti DML pada
table (INSERT, UPDATE atau DELETE)
KEUNTUNGAN MENGGUNAKAN
TRIGGER
Keuntungan penggunaan Trigger antara lain :
a) Standarisasi (penyeragaman) proses. Trigger dibuat
satu kali dan tersimpan dalam database, sehingga
semua client yang menggunakan database tersebut
sekaligus adalah pengguna Trigger. Dengan demikian
seluruh client akan menggunakan operasi yang sama
terhadap suatu proses dalam database, karena Trigger
yang dipakai sama
b) Menyederhanakan pemrograman. Apabila Trigger
sudah dibuat dalam database server, seluruh
program dalam bahasa apapun, yang mengakses
database tersebut akan secara otomatis
menggunakan Triger yang ada tanpa perlu
membuat perintahnya dalam program aplikasi.
c) Mudah diperbaharui. Apabila Trigger pernah di-
update dalam database server, semua client
akan menggunakan perbaruan yang terakhir
d) Kecepatan dan efisiensi proses. Oleh karena
Trigger disimpan dalam server dalam kode yang
sudah terkompilasi, dan dilaksanakan dalam
server sehingga lalu-lintas jaringan menjadi
berkurang.
e) Memudahkan kerja secara tim. Apabila Trigger dan
Stored Procedure sudah dibuat, anggota tim
kerja dapat menggunakan bahasa pemrograman
yang berbeda dalam mengaksesnya, karena
Trigger disimpan dan dilaksanakan oleh server,
tanpa melihat bahasa pemrograman apa yang
dipakai oleh pengguna database.
PETUNJUK UNTUK DISAIN
TRIGGER
Gunakan trigger untuk memastikan pada saat
sebuah operasitertentu terbentuk, aksi yang
berhubungan dengannya juga terbentuk.
Gunakan database trigger hanya untuk
operasi yang global.
Tidak mendisain trigger untuk fungsi-fungsi
yang yang telah dibuat oleh server
database dan tidak boleh membuat duplikasi
trigger
Buatlah store procedur dan invoke prosedur
dalam sebuah trigger jika kode PL/SQL terlalu
panjang.
Gunakan trigger untuk menghasilkan hasil
dengan tingkat interdepensi yang tinggi, yang
sulit untuk dimaintain dalam aplikasi yang
besar.
Database trigger akan terjadi untuk setiap
user pada saat sebuah kejadian yang
mentrigger dibuat
MEMBUAT TRIGGER
Syntaks
CREATE
[DEFINER = { user | CURRENT_USER }]
TRIGGER trigger_name trigger_time
trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
Sebelum membuat coding untuk trigger, tentukan
terlebih dahulu nilai-nilai dari komponen trigger
yaitu: trigger timing, trigger event dan trigger type.
STRUKTUR TRIGGER
CREATE TRIGGER nama trigger
{ BEFORE I AFTER }
{ INSERT I UPDATE I DELETE }
ON nama_tabel
FOR EACH ROW
STATEMENT - STATEMENT
MEMBUAT TRIGGER
Trigger body (trigger_statement) aksi apa
yang trigger buat ?
Trigger body merupakan pernyataan atau
perintah yang dilaksanakan Trigger. Jika
pernyataan yang dilaksanakan lebih dari satu
perintah, beberapa perintah dapat dimasukan
ke dalam block BEGIN .. END .
MEMBUAT TRIGGER
Triggering user event (Trigger_event) DML statement
yang menyebabkan trigger dieksekusi. Peristiwa atau
kejadian yang memicu terjadinya Trigger. Kita
dapat menggunakan statement INSERT, UPDATE,
DELETE
a) Saat menggunakan UPDATE maka perlu
memasukan list kolom, untuk mengidentifikasikan
kolom mana yang berubah,.
b) Tidak perlu menspesifikasikan list kolom untuk
statement INSERT atau untuk DELETE karena
perintah tersebut akan berpengaruh pada suatu
row.
c) Trigger dapat berisi satu, dua atau ketiganya dari
Temporer Tabel (Old dan New)
Perlu diketahui pada saat proses
menambahkan data, MySQL akan membuat
semacam tabel temporer dengan struktur
yang sama dengan tabel yang akan diisi.
Tabel temporer diberi nama new. Pada saat
proses pemasukan data (INSERT), nilai-nilai
yang akan dimasukan ke dalam tabel disalin
ke dalam tabel NEW
Hal yang hampir sama juga berlaku pada proses
penghapusan data (DELETE). Pada perintah
menghapus data akan dibuat tabel temporer OLD
dengan struktur yang sama dengan tabel yang record-
nya akan dihapus.
Sedangkan untuk proese updating data (UPDATE)
kedua tabel temporer yaitu OLD dan NEW dibuat. Old
akan menyimpan data yang dihapus (sebelum di-
update) dan New berisi data pengganti (data baru).
MENGAKSES NILAI BARU DAN
LAMA
DI DALAM TRIGGER ANDA DAPAT MENGAKSES DATA
LAMA DAN DATA BARU. DATA LAMA DAPAT DIBUAT
DIREFFERENCE DENGAN RECORD OLD DAN DATA
BARU DAPAT DIREFFERENCE DENGAN RECORD NEW
OPERASI NEW OLD
(READ/WRITE) (READ)
INSERT √
UPDATE √ √
DELETE √
Contoh
Perhatikan tabel berikut ini:
Misalkan stock pada tabel barang masih kosong. Kemudian akan dibuat
Trigger yang otomatis akan mengupdate stock pada tabel barang
jika terdapat proses pembelian
Adapun tabel Detail Pembelian mempunyai struktur sebagai berikut:
Table Create Table
--------------- -----------------------------------------------
detailpembelian CREATE TABLE `detailpembelian` (`NoReference` varchar(10) NOT NULL
default '',
`KodeBarang` varchar(12) NOT NULL default '',
`HargaBeli` double NOT NULL default '0',
`JumlahBarang` int(8) NOT NULL default '0',
`Operator` varchar(8) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
MENGHAPUS DAN MEMPERBAIKI
TRIGGER
MySQL tidak menyediakan fasilitas untuk
memperbaiki atau mengedit Trigger. Oleh
karena itu cara untuk memperbaiki Trigger
adalah dengan menghapusnya, kemudian
membuat yang baru.
DROP TRIGGER Trigger_name
TERIMAKASIH