STORED PROCEDURE & TRIGGER
Stored Procedure Sebuah stored procedure adalah kumpulan dari prosedur dan statement SQL yang terdapat pada DBMS. Dikenali dengan nama Dieksekusi sebagai sebuah sebuah kesatuan (unit) Di Oracle, dikenal dengan PL/SQL (Procedural Language/SQL)
Keuntungan stored procedure Mengurangi network traffic dan meningkatkan performance Tidak ada transmisi individual SQL statements pada network
Stored Procedure syntax CREATE OR REPLACE PROCEDURE procedure_name (argument IN/OUT data-type, etc) IS/AS BEGIN DECLARE variable name and data type PL/SQL or SQL statement END; DECLARE digunakan untuk mendeklarasikan variabel yg digunakan dan tipe datanya Argumen menspesifikasikan parameter IN (input) & OUT (output) Data type merupakan salah satu dari tipe data yang terdapat pada DBMS. Untuk mengeksekusinya: EXEC stored_procedure_name (parameter, parameter, …)
Contoh stored procedure DAN cara memanggilnya
TRIGGER
OVERVIEW Merupakan jenis Blok PL/SQL yang berhubungan/ berasosiasi dengan table, view, schema, atau database. Dieksekusi secara implisit ketika terjadi suatu event Jenis-jenis trigger: Application trigger: dibangkitkan ketika terjadi event pada aplikasi (Oracle Form Developer) Database Trigger: dibangkitkan ketika terjadi event pada data (ex: DML) atau event pada system (ex: logon, shutdown, dll) pada schema database.
Manfaat Trigger Menentukan nilai kolom-kolom tertentu secara otomatis. Menghindarkan transaksi data yang tidak valid.
BATASAN TRIGGER Trigger mempunyai batasan: Tidak dapat menggunakan perintah commit dan rollback, selain itu juga tidak dapat memanggil procedure, function atau package yang menggunakan perintah commit dan rollback. Tidak dapat melanggar constraint.
Jenis-Jenis DML Trigger Statement Trigger Dieksekusi sekali ketika terjadi trigger event Akan selalu dieksekusi walaupun tidak ada row data yang berubah Row Trigger Dieksekusi sebanyak row data yang berubah Tidak akan dieksekusi jika tidak ada row data yang berubah Ditunjukkan oleh statement FOR EACH ROW
Membuat DML Trigger CREATE [or replace] TRIGGER nama_trigger ( BEFORE|AFTER ) ( INSERT|UPDATE [OF nama_kolom, ..]|DELETE )ON nama_tabel [REFERENCING OLD as nilai_lama NEW as nilai_baru] [FOR EACH ROW] [WHEN (kondisi)] DECLARE Deklarasi tipe data BEGIN Trigger body END;
Trigger Timing Waktu tereksekusinya trigger Before trigger dieksekusi sebelum trigger event After trigger dieksekusi setelah trigger event
Trigger Event Pemicu tereksekusinya trigger Insert trigger dieksekusi jika ada perintah insert untuk suatu tabel. Update trigger dieksekusi jika ada perintah update untuk suatu tabel. Delete trigger dieksekusi jika ada perintah delete untuk suatu tabel.
Trigger Restriction Kondisi yang menentukan apakah isi dari trigger dieksekusi atau tidak. Contoh: when (new.donasi => 0)
Alias/ Referensi Kita mungkin akan berhubungan dengan data lama (old) dan data baru (new) yang terjadi dalam transaksi. Dalam trigger, dikenal istilah alias atau referensi, yaitu sejenis variabel yang menyimpan nilai dari suatu kolom dalam tabel. Alias terbagi menjadi dua, yaitu: Untuk mendapatkan data baru pada sebuah tabel di dalam trigger body, dapat dilakukan dengan perintah sebagai berikut: :new.nama_kolom Untuk mendapatkan data lama pada sebuah tabel di dalam trigger body, perintah yang digunakan: :old.nama_kolom Referensi nilai kolom di trigger: insert new.nama_kolom update new.nama_kolom dan old.nama_kolom delete old.kolom_name
Mengaktifkan dan Me-non aktifkan Trigger ALTER TRIGGER nama_trigger DISABLE | ENABLE; Untuk mengaktifkan atau menonaktifkan semua trigger yang diasosiasikan pada sebuah tabel dapat menggunakan sintaks: ALTER TABLE nama_tabel [DISABLE|ENABLE] ALL TRIGGERS; Sedangkan untuk menghapus trigger digunakan perintah berikut : DROP TRIGGER nama_trigger;
Contoh trigger