Tujuan Pembelajaran Mampu membuat database or system event trigger Mampu menjelaskan dan mendemokan mutating table pada trigger Mampu menjelaskan dan mendemokan Instead of T rigger System ID: 492248
Download Presentation The PPT/PDF document "TRIGGER LANJUT" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
TRIGGER LANJUTSlide2
Tujuan
Pembelajaran
Mampu membuat database or system event trigger
Mampu menjelaskan dan mendemokan mutating table pada trigger Mampu menjelaskan dan mendemokan Instead of Trigger Slide3
System Event Trigger
Penggunaan trigger dapat dikelompokkan menurut event yang terjadi:
System
eventsPada saat database startup & shutdownServer error message events, yaitu pada saat terjadi error User events, yaitu Pada saat seorang user melakukan login
atau logoff pada schema atau database
User
operationa. DDL statements (CREATE, ALTER, and DROP)b. DML statements (INSERT, DELETE, and UPDATE)Slide4
Contoh
Trigger On System Event
Buatlah
trigger
bernama TRG_SCHEMA_LOGIN. Trigger ini akan mencatat user
aktifitas
login pada schema OE, waktu login, dan keterangan loginnya. Jalankan SQLPlus Login ke Schema OETerlebih dahulu buatlah tabel catat_log (id_user, tgl_log, aksi) untuk menyimpan data akses schema OE. Buat TriggerUji trigger dengan login ke schema OETampilkan data tabel catat_logSlide5
Mutating Table
Error mutating table terjadi pada saat membuat row trigger
dimana pada isi/ body dari trigger yang
dibuat terdapat proses yang melibatkan objek (biasanya ) yang sama dengan objek tabel pada event pemicunya .Salah satu hal penting yang harus diperhatikan pada saat menggunakan trigger adalah penanganan error mutating table. Error mutating table terjadi karena secara default trigger tidak diijinkan untuk
membaca
data yang tidak konsisten saat terjadi operasi DML. Transaksi yang terjadi pada trigger
biasanya merupakan transaksi yang bergantung pada transaksi lain sehingga ketika terjadi kegagalan pada transaksi induk maka transaksi yang ada pada trigger akan di-rollback. Slide6
Mengatasi Error Mutating Table
Beberapa cara yang dapat
dilakukan
untuk mengatasi error mutating table antara lain:Menggunakan statement trigger jika memungkinkan Menyimpan nilai summary data yang dibutuhkan
pada
trigger body
ke dalam tabel yang terpisah dengan memastikan nilai summary data tersebut
tetap
up-to-date.
Menyimpan summary data yang dibutuhkan pada package. Solusi ini dapat dilakukan jika kita mengunakan statement trigger dengan timing BEFORE Menggunakan compound trigger. Compoud trigger merupakan fitur baru pada oracle 11g yang memungkinkan kita untuk mengkombinasikan lebih dari satu timing pada satu trigger. Bahkan kita dapat membuat row trigger dan statement trigger dalam satu trigger. Slide7
Contoh
Mutating Table
Buatlah
trigger
bernama
TRG_TES_MUTATING dimana trigger ini akan menampilkan
jumlah
data yang terdapat pada tabel departments setelah dilakukan operasi DML di tabel departmentsJalankan SQLPlus Login ke HRKetikan set serveroutput onBuat row trigger berikutJalankan perintah insert pada tabel departmentsAkan tampil error mutating tableAtasi dengan statement triggerJalankan kembali perintah insert
pda
tabel
departments
Trigger
berhasil
dijalankanSlide8
Trigger Timing
Dalam pembuatan sebuah trigger kita dapat menentukan trigger timing yaitu apakah trigger body akan dieksekusi sebelum atau sesudah triggering statement dieksekusi.
Before trigger menjalankan trigger body sebelum event atau triggering statement. Oleh karena itu, trigger ini cocok digunakan untuk mendeteksi bagaimana event boleh dilanjutkan maupun tidak.
After trigger menjalankan trigger action setelah event terjadi. Before dan After trigger tidak dapat diimplementasikan pada viewInstead Of TriggerInstead of trigger hanya akan dieksekusi pada view dan diaktivasi jika terjadi perubahan pada tabel asal. Proses yang akan dilakukan oleh triggering statement akan digantikan oleh aksi pada trigger body.Slide9
Contoh
Instead of Trigger
Buatlah
Trigger yang
digunakan untuk keamanan data, sehingga jika ada yang berusaha
menghapus
isi tabel rekam, maka akan proses penghapusan akan digagalkan dan dalam tabel rekam dicatat "berusaha menghapus rekaman data"Pertama, sebelum kita membuat triggernya, kita terlebih dahulu membuat sebuah VIEWCREATE VIEW v_rekaman asselect pelaku, tanggal, aksi from rekaman;kemudian kita membuat triggernyaLakukan penghapusan pada vrekamMaka trigger akan muncul
dan
data di
vrekam
tidak
terhapusSlide10
Referensi
Feuerstein
, Steven,
dan Bill Pribyl. Oracle PL/SQL programming. Sebastopol, CA: O'Reilly, 2009. Print.Urman, Scott, Ron Hardman, dan Michael McLaughlin. Oracle
Database
10g PL/SQL
Programming. New York: McGraw-Hill/Osborne, 2004. Print.Srivastava, Tulika
, dan Glenn
Stokol
. Oracle Database 10g: Develop PL/SQL Program Units 2nd Edition. Boston: Oracle Publisher, 2006.Dedy Rahman Wijaya. Modul Praktikum Pemrograman Basis Data. Universitas Telkom, 2014.