Trigger adalah
blok PL/SQL atau prosedur yang berhubungan dengan table, view, skema atau
database yang dijalankan secara implicit pada saat terjadi sebuah event.
Trigger merupakan store procedure yang dijalankan secara automatis saat user
melakukan modifikasi data pada tabel. Modifikasi data yang dilakukan pada tabel
yaitu berupa perintah INSERT, UPDATE, dan DELETE. INSERT , UPDATE dan DELETE
bisa digabung jadi satu trigger yang dinamakan Multiple Trigger.
Tipe dari trigger adalah :
Database
trigger, diaktifkan pada saat terjadi event yang berhubungan dengan
data (seperti operasi DML) atau event yang berhubungan dengan sistem (semisal
logon atau shutdown) yang terjadi pada sebuah skema atau database.
Application
trigger, diaktifkan pada saat terjadi event yang berhubungan dengan
sebuah aplikasi.
Trigger
perlu dibuat pada saat :
· Membentuk sebuah aksi tertentu terhadap suatu event
· Memusatkan operasi global
Sintak
penulisan dari database trigger, berisi komponen berikut :
1. Trigger timing :
a. Untuk tabel : BEFORE, AFTER
b. Untuk view : INSTEAD OF
2. Trigger event : INSERT, UPDATE atau DELETE
3. Nama tabel : yaitu nama tabel atau view yang berhubungan
dengan trigger
4. Tipe trigger : Baris atau Pernyataan (statement)
5. klausa WHEN : untuk kondisi pembatasan
6. trigger body : bagian prosedur yang dituliskan pada
trigger
Trigger timing adalah waktu kapan trigger diaktifkan. Ada tiga
macam trigger timing, yaitu :
· BEFORE : trigger dijalankan sebelum DML event pada tabel
· AFTER : trigger dijalankan setelah DML event pada tabel
· INSTEAD OF : trigger dijalankan pada sebuah view.
Trigger event ada 3 kemungkinan : INSERT, UPDATE atau DELETE.
Pada saat trigger event UPDATE, kita dapat memasukkan daftar
kolom untuk mengidentifikasi kolom mana yang berubah untuk mengaktifkan sebuah
trigger (contoh : UPDATE OF salary ... ). Jika tidak ditentukan, maka perubahannya
akan berlaku untuk semua kolom pada semua baris.
Tipe trigger ada 2 macam, yaitu :
Trigger
body mendefinisikan tindakan yang perlu dikerjakan pada saat
terjadinya event yang mengakibatkan sebuah trigger menjadi aktif.
Row trigger, dijalankan pada setiap baris
yang dipengaruhi oleh terjadinya sebuah event. Row trigger tidak dijalankan
jika event dari trigger tidak berpengaruh pada satu baris pun.
Statement trigger, dijalankan
sekali saja pada saat terjadi sebuah event. Statement trigger juga dijalankan
sekali, meskipun tidak ada satupun baris yang dipengaruhi oleh event yang
terjadi.
Contoh trigger
CREATE OR REPLACE TRIGGER ( nama_trigger)
AFTER INSERT ON (table tujuan)
FOR EACH ROW
DECLARE
X NUMBER;
BEGIN
X:=:NEW.(nama_kolom);
UPDATE (table yang di ubah) SET (perhitungan)jml_stok = jml_stok - X ;
END;
Buat trigger terlebih dahulu seperti berikut ini :
CREATE OR REPLACE TRIGGER TR_AI_penjualan
AFTER INSERT ON penjualan
FOR EACH ROW
DECLARE
X NUMBER;
BEGIN
X:=:NEW.JUMLAH_JUAL;
UPDATE STOK SET jml_stok = jml_stok - X ;
END;
Setelah di buat kita cek table yang ada di di table stok kita
igin merubah jumlah stok jika ada pembelian di table pembelian yang berjumlah 5
pembelian pada barang kipas angin yang tadi berjumlah 20 maka akan berkurang 5
menjadi 15.
Select * from stok
Setelah itu masukkan
data baru di table penjualan barang yang di jual adalah dengan kode 0003 yang
terjual 5 unit.
INSERT INTO penjualan
VALUES (‘JU001’, ‘0003’, 5);
Select * from stok
Belum ada tanggapan untuk "Trigger pada pl/sql"
Post a Comment