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 :
· Application trigger : diaktifkan pada saat terjadi event yang berhubungan dengan sebuah aplikasi
· 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.
Trigger perlu dibuat pada saat :
· Membentuk sebuah aksi tertentu terhadap suatu event
· Memusatkan operasi global
Trigger tidak perlu dibuat, jika :
· Fungsionalitas yang diperlukan suatu ada pada Oracle server
· Duplikat atau sama dengan fungsi trigger yang lain.
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 :
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.
· 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.
Trigger body mendefinisikan tindakan yang perlu dikerjakan pada saat terjadinya event yang mengakibatkan sebuah trigger menjadi aktif.
Tipe dari trigger adalah :
· Application trigger : diaktifkan pada saat terjadi event yang berhubungan dengan sebuah aplikasi
· 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.
Trigger perlu dibuat pada saat :
· Membentuk sebuah aksi tertentu terhadap suatu event
· Memusatkan operasi global
Trigger tidak perlu dibuat, jika :
· Fungsionalitas yang diperlukan suatu ada pada Oracle server
· Duplikat atau sama dengan fungsi trigger yang lain.
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 :
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.
· 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.
Trigger body mendefinisikan tindakan yang perlu dikerjakan pada saat terjadinya event yang mengakibatkan sebuah trigger menjadi aktif.
TRIGGER SQL 2000
1. Trigger History_Customer
create trigger history_customer on Customer
after update as
if (update (ID_Customer) or update (Nama_Customer) or
update (Alamat) or update (No_Telp))
begin
insert into customer_backup (ID_Customer,
Nama_Customer) or update (Jenis_Kelamin) or update (Alamat) or update (No_Telp)
select ID_Customer, Nama_Customer, Jenis_Kelamin,
Alamat, No_Telp
from deleted
END
Sebelumnya buat tabel kosong dengan column & tipe
data yang sama, jalankan tabel tersebut dahulu untuk memastikan telah terbuat
belum
Ini tampilan tabel barunya, datanya masih kosong.
Dan ini tampilan dari tabel yang akan dibackup ketika ada
data baru yang diupdate.
Column Alamat dengan ID_Customer 200010 akan diupdate dari Jl. Banten menjadi Jl. Banten
Column Alamat dengan ID_Customer 200010 akan diupdate dari Jl. Banten menjadi Jl. Banten
Untuk
menjalankanya
Setelah diupdate
Maka di tabel yang dibuat akan terisi oleh data tabel
Customer yang diupdate tersebut, sehingga data lama tidak hilang melainkan
terbackup di tabel Customer_Backup
2. Insert PesananBaru
create trigger PesananBaru on Customer
for inset
as
declarate @kode_menu int
declarate@ID_Customer int
declarate@Nama_Menu varchar (20)
declarate@Jumlah_Menu varchar (20)
declarate@Harga varchar (20)
declarate@Tgl_Order varchar (20)
select @kode_menu = kode_menu, @ID_Customer =
ID_Customer, @Nama_Menu = Nama_Menu, @Jumlah_Menu = Jumlah_Menu, @Harga =
Harga, @Tgl_Order = Tgl_Order from Catering go
Untuk menjalnkanya
Maka akan tampil
Dan tabel di bawah ini adalah tabel sebelum trigger
dijalankan
3. Update Pembaruan_Bahan_Produksi
CREATE TRIGGER Pembaruan_Produksi ON Owner
FOR UPDATE
AS
DECLARATE @Kode_Barang int
DECLARATE@Harga_Barang varchar (20)
DECLARATE@Tgl_Pembelian_Barang varchar (20)
SELECT @Harga_Barang = Harga_Barang from
Bahan_Produksi WHERE Kode_Barang=Kode_Barang
SELECT @Tgl_Pembelian_Barang -= Tgl_Pembelian_Barang
from Bahan_Produksi WHERE Kode_Barang=@Kode_Barang
go
Untuk menjalankanya
Maka akan tampil
Dan tabel di bawah ini adalah tabel sebelum trigger
dijalankan
TRIGGER PADA ORACLE
1. Trigger History Customer
Trigger ini di buat untuk menduplikasi data yang
dimasukkan atau di update dalam data customer ke data customer backup
Sebelum membuat triggernya pertama – tama kita buat dulu
tabel baru dengan nama customer_backup
create table
customer_backup (ID_Customer1 int primary key, Nama_Customer1 varchar (20),
Jenis_Kelamin varchar (1), Alamat1 varchar(20), No_Telp1 varchar(20));
Setelah itu kita cek apakah tabel telah dibuat atau tidak
dengan menggunakan perintah
Akan muncul tabel seperti berikut
Setelah itu kita buat trigger history customer dengan
query sebagai berikut :
create or replace
trigger history_customer
after insert or
update on customer
for each row
begin
insert into
customer_backup
values (:new,
id_customer, :new.nama_customer, :new.jenis_kelamin, :new.alamat, :
new.no_telp);
Akan muncul output seperti berikut
Trigger telah di buat .
Untuk mengetest trigger tersebut maka kita mencoba
menginputkan data ke dalam tabel customer
Maka data akan masuk ke dalam tabel customer dan customer
backup
Dan tampilan di dalam tabel customer backup bertambah
juga
2. Trigger untuk menambahkan jumlah menu
Trigger ini digunakan untuk menambahkan secara langsung
data yang telah di input dari tabel
Tambah menu dengan tabel catering.
Pertama – tama kita bikin terlebih fahulu tabel tambah
menu
create table
tambahmenu (kode_menu2 int, jumlah_menu2 int)
Setelah itu kita buat trigger dengan nama tambahmenu
create or replace
trigger tambahmenu
after insert on
tambahmenu
for each row
begin
update catering set jumlah_menu
= jumlah_menu + :new.jumlah_menu where kode_menu2;
end ;
Akan muncul sebagai berikut setalah di compile
Sekarang kita coba memasukkan data ke dalam tabel tambah
menu.
Dengan perintah
Akan keluar sebegai berikut
Tabel tambah menu sebelum di insert
Dan di dalam tabel catering jumlah menu di dalam
kode_menu no 1111 akan bertambah sebanyak 4
Tabel catering sebelum data di tabel menu bertambah
Tabel setelah berubah
3. Trigger total harga
Di dalam trigger ini kita akan secara otomatis menghitung
totalharga dari jumlah menu di kalikan dengan harga menu
Dimana bila kita menginput secara acak hasil dari
totalharga tersebut . secara otomatis data tersebut akan berubah menjadi jumlah
dari jumlahmenu dan harga.
KESIMPULAN
Trigger
merupakan sekumpulan perintah atau sintaks yang akan secara otomatis dijalankan
jika terjadi operasi tertentu dalam tabel atau view. Trigger digunakan untuk
memanggil satu atau beberapa perintah SQL secara otomatis sebelum atau sesudah
terjadi proses INSERT, UPDATE atau DELETE dari suatu tabel. Sebagai contoh
misalnya kita ingin menyimpan id pelanggan secara otomatis ke tabel ‘log’
sebelum menghapus data di tabel pelanggan. Trigger (Before atau After)
digunakan untuk menentukan kapan proses secara otomatis akan dieksekusi,
sebelum atau sesudah proses. Trigger (Insert, Update dan Delete) digunakan
untuk menentukan proses yang dijadikan trigger (pemicu) untuk menjalankan
perintah-perintah di dalam triggers.
0 komentar:
Posting Komentar