Trigger PERANCANGAN DAN PEMBUATAN PERANGKAT LUNAK SISTEM REPORT EVENT BERBASIS WEB MENGGUNAKAN METODE BERORIENTASI OBYEK.

29 a. Secara alami bersifat algoritmik, dimana rule tersebut dijalankan sesuai dengan kondisi yang berlaku. b. Kondisi yang ditetapkan adalah data pengguna. c. Deskripsi kerjanya adalah mengubah dan meng-query data oleh pengguna sesuai dengan rule yang dijalankan. 4. Output yang ditentukan secara lengkap oleh spesifikasi dari query perubahan yang dilakukan. 3 Library IT Telkom : Active Database. 2008.

2.6 Trigger

Trigger adalah suatu prosedur yang dilakukan oleh DBMS jika terjadi perubahan pada tabel database. Beberapa prosedur yang dapat dilakukan oleh trigger antara lain verifikasi data, melacak perubahan yang terjadi pada sebuah tabel atau melakukan pengecekan business rule. Tabel yang dijadikan acuan untuk pembuatan trigger disebut tabel trigger. Sepintas trigger mirip dengan store procedure, tetapi trigger tidak dapat dieksekusi secara langsung. Trigger harus didasarkan kepada salah satu statement SQL insert, update, atau delete, dan SQL server akan secara otomatis mengeksekusi trigger ketika user mengeksekusi salah satu statement SQL tersebut. SQL server memperlakukan trigger dan statement SQL yang memanggilnya sebagai transaksi tunggal. Keseluruhan transaksi dapat di-rollback dari dalam trigger. Misalnya ada proses pengecekan error pada trigger dan memanggil rollback transaction jika error ditemukan. Yang perlu diingat adalah jika sebuah transaksi user memanggil sebuah trigger, dan trigger tersebut 30 memanggil sebuah rollback transaction, maka SQL server akan me-rollback tiap langkah eksekusi dari trigger sekaligus tiap langkah dari transaksi user. Hal ini dapat menyebabkan penurunan performance data dilakukan sebelum proses transaksi user. Beberapa alasan mengapa perlu menggunakan trigger adalah sebagai berikut : a. Untuk memaksakan integritas data. Trigger digunakan untuk memaksakan integritas data, bukan untuk menghasilkan sebuah data sebagai hasil query. Trigger biasanya dieksekusi apabila ada perubahan data pada tabel. Ketika data pada sebuah tabel diubah melalui proses update atau delete, maka perubahan tersebut dapat mempengaruhi data pada tabel-tabel lainnya. Hal ini dapat menyebabkan inkonsistensi data sehingga trigger dapat digunakan untuk “memaksa” perubahan di tabel-tabel yang terpengaruh agar database tetap konsisten. Misalnya digunakan trigger untuk melakukan cascading delete pada sebuah tabel pelanggan di database rental VCD. Sebelum data seorang pelanggan tersebut harus dihapus terlebih dahulu. Setelah itu data pelanggan yang bersangkutan dapat dihapus, tanpa menimbulkan ketidakstabilan database. b. Untuk memaksakan business rule. Trigger dapat digunakan untuk memaksakan business rule aturan- aturan yang spesifik yang ada pada sebuah sistem yang terlalu kompleks 31 untuk dikerjakan oleh constraint. Misalkan seorang pelanggan tidak diperbolehkan meminjam sebuah film jika belum mengembalikan film yang sebelumnya dipinjam, yang sudah habis batas pinjamnya. c. Untuk menghasilkan nilai dari sebuah perhitungan. Misalkan ingin membuat nomor pelanggan berdasarkan nama dan nomor teleponnya, maka dapat digunakan trigger untuk melakukan proses pengambilan substring dari nama dan nomor telepon dan menggabungkannya sehingga menjadi sebuah nomor pelanggan. d. Untuk melacak perubahan atau update pada sebuah tabel. Misalkan pada database kepegawaian terdapat sebuah tabel pegawai yang sekaligus memuat data gaji pegawai. Jika data gaji tersebut diubah dilakukan proses update maka update trigger dapat melakukan perubahan record tidak hanya pada tabel pegawai, tetapi juga pada tabel audit keuangan yang melakukan penghitungan pajak penghasilan dari pegawai. Sepintas trigger juga mirip dengan constraint, tetapi trigger merupakan prosedur yang reaktif karena dilakukan setelah sebuah statement SQL dikerjakan, sedangkan constraint merupakan prosedur yang proaktif karena dilakukan sebelum sebuah statement SQL dikerjakan. Pada MySQL trigger untuk insert, update dan delete dapat diawali dengan AFTER atau FOR adalah untuk membuat trigger biasa, misal untuk trigger pengubahan nilai gaji pegawai digunakan FOR UPDATE atau AFTER 32 UPDATE SQL server 2000 menggunakan awalan AFTER , sedangkan FOR digunakan pada SQL server versi sebelumnya. INSTEAD OF adalah untuk membuat trigger pengganti dari trigger yang sudah didefinisikan sebelumnya pada tabel atau view dengan action yang sama. Misal sebuah trigger INSTEAD OF INSERT pada sebuah view untuk menggantikan trigger yang sudah didefinisikan untuk tabel asalnya. Berikut beberapa contoh pembuatan Trigger : a. INSERT CREATE TRIGGER trigger_name ON table_name AFTER INSERT AS Commands Contoh : CREATE TRIGGER audit_changes ON [dbo][roysched] FOR INSERT AS INSERT audit_trail[title_id,royalty] SELECT title_id,royalty From inserted Penjelasan : Insert trigger tersebut untuk mengkopi record baru yang ditambahkan ke tabel roysched pada database pubs. Tabel roysched menyimpan daftar judul buku yang ditulis oleh pengarang beserta presentasi royalti yang diterima masing-masing pengarang. Karena informasi ini cukup penting, maka insert trigger dapat digunakan untuk mengkopi barisrecord baru yang ditambahkan pada tabel ini ke tabel lain 33 yang diberi nama audit_trail. Tabel ini harus memiliki nama kolom dan tipe data yang sama dengan tabel roysched jika ingin mengkopi seluruh informasi baris. Jika ingin mengkopi kolom title_id dan royalty saja, maka cukup dibuat dua kolom pada tabel audit_trail. b. UPDATE Update trigger akan dijalankan pada sebuah tabel jika isi salah satu atau beberapa kolomnya berubah diupdate. Contoh update trigger berikut akan menambahkan baris baru pada tabel audit_trail jika nilai kolom royalty di tabel roysched diupdate. Nilai royalty untuk title_id TC7777 yang tadinya 16 akan diupdate menjadi 20. Prosedur ini diperlukan untuk menyimpan perubahan yang terjadi pada tabel roysced, khususnya pada kolom royalty. Contoh : CREATE TRIGGER audit_update ON roysched FOR UPDATE AS IF UPDATE royalty BEGIN INSERT INTO audit_trail title_id,royalty SELECT title_id,royalty FROM inserted END c. DELETE Delete trigger berikut akan menghapus record pada tabel audit_trail jika record yang bersesuaian dengannya di tabel roysced dihapus. Contoh : CREATE TRIGGER delete_audit_trail ON roysched FOR DELETE AS delete from audit_trail 34 where title_id in select title_id from deleted Opsi WITH ENCRYPTION dapat digunakan jika ingin membuat trigger yang terenkripsi, sehingga user lain tidak dapat melihat definisi trigger tersebut. Hampir semua sintaks SQL dapat digunakan untuk membuat trigger, seperti penggunaan IF untuk pengecekan kondisi logic dari trigger. Beberapa keyword yang tidak dapat digunakan dalam trigger adalah sebagai berikut : ALTER DATABASE CREATE DATABASE DROP DATABASE DISK INIT DISK RESIZE LOAD DATABASE LOAD LOG RECONFIGURE RESTORE DATABASE RESTORE LOG

2.7 Grafik