pt12 - trigger

16
TRIGGER RA. Paramita Mayadewi, S.Kom,M.T. MI2183 - Pemrograman Basisdata Prodi D3 Manajemen Informatika Fakultas Ilmu Terapan Universitas Telkom

Upload: thamheeta

Post on 10-Nov-2015

214 views

Category:

Documents


2 download

DESCRIPTION

Trigger dalam Oracle PL/SQL

TRANSCRIPT

ENTERPRISE ARCHITECTURE PLANNING DALAM PENYUSUNAN IT STRATEGIC PLAN DI FAKULTAS ILMU TERAPAN, UNIVERSITAS TELKOM

TRIGGERRA. Paramita Mayadewi, S.Kom,M.T.MI2183 - Pemrograman BasisdataProdi D3 Manajemen InformatikaFakultas Ilmu TerapanUniversitas TelkomTujuan PembelajaranMampu menjelaskan tipe triggerMampu menjelaskan penggunaan triggerMampu menciptakan triggerMampu menjelaskan aturan triggerMampu menghapus trigger

PENGANTARTrigger merupakan PL/SQL blok atau PL/SQL prosedur yang berkaitan dengan tabel, view, skema atau databaseTrigger dijalanlan secara implisit kapan saja sebuah event tertentu terjadiJenis TriggerApplication Trigger : dibangkitkan setiap kali sebuah event muncul dengan aplikasi tertentuDatabase Trigger : dibangkitkan setiap kali sebuah data event (spt DML) atau system event (spt log on atau shutdown) muncul pada skema atau databaseDatabase TriggerDatabase trigger dijalankan secara implisit ketika salah satu dari kejadian berikut muncul:Operasi DML pada tableOperasi DML pada view, dengan INSTEAD OF triggerPernyataan DDL, seperti CREATE dan ALTERManfaat TriggerMengatur integritas dari constraint yang kompleks yang tidak mungkin ditangani oleh sintaks-sintaks pembuatan tabel.Mencegah transaksi yang tidak validMemperbaiki keamanan database dengan menyediakan audit yang lebih kompleks mengenai informasi perubahan database dan user siapa yang melakukan perubahan.Secara otomatis memberi sinyal program lain untuk melakukan sesuatu jika isi tabel diubah.

Batasan TriggerTidak dapat menggunakan perintah commit dan rollback, selain itu juga tidak dapat memanggil procedure, function atau package yang menggunakan perintah commit dan rollback.Tidak dapat diimplementasikan pada kolom pada suatu tabel yang memilki constraint, jika pada akhirnya akan menyebabkan pelanggaran constraint. Biasanya terjadi akibat modifikasi pada primary key

Tipe DML TriggerStatement triggerdijalankan sekali untuk setiap kejadianmerupakan tipe default triggerakan dijalankan walaupun tidak ada baris yang terkena dampak pelaksanaan triggerRow triggerdijalankan sekali untuk setiap baris yang terkena dampak dari suatu kejadian tidak akan dijalankan apabila tidak berdampak pada baris dalam tabeldiidentifikasi melalui keberadaan klausa FOR EACH ROWBentuk Umum TriggerCREATE [OR REPLACE] TRIGGER Ttrigger_name {BEFORE|AFTER}Triggering_event ON table_name [FOR EACH ROW] [WHEN condition]DECLARE declaration statementsBEGIN executable statements EXCEPTION exception-handling statementsEND;Alias TriggerDalam trigger terdapat istilah alias atau referensi, yaitu variabel yang digunakan untuk mendapatkan nilai-nilai kolom yang terdapat pada tabel.Terdapat 2 alias dalam trigger::new dan :oldAlias dituliskan di depan nama field yang akan diambil nilainya.Contoh :new.kdcustomer :old.nmcustomerAlias Trigger (cont)Setiap proses manipulasi data (INSERT, UPDATE dan DELETE) mempunyai alias yang berbeda-beda. Berikut penjelasannya:PROSES INSERT.Hanya terdapat alias :new yang berfungsi untuk mengambil nilai kolom dari baris yang akan dimasukkan.PROSES UPDATEMemiliki dua buah alias yaitu :new dan :old.:new digunakan untuk mengambil nilai baru dan :old digunakan untuk mengambil nilai lamaPROSES DELETEMemiliki alias :old yang digunakan untuk mengambil nilai kolom dari baris yang dihapus.

Contoh TriggerCiptakan terlebih dahulu table SISWA dengan struktur sebagai berikut:NIMCHAR(10)PRIMARY KEYNamaVARCHAR2(25)Contoh TriggerCREATE OR REPLACE TRIGGER tg_insertSiswaAFTER INSERT ON siswaFOR EACH ROWBEGIN DBMS_OUTPUT.PUT_LINE('Data Sudah ditambahkan'); DBMS_OUTPUT.PUT_LINE('Data Yang ditambahkan :'); DBMS_OUTPUT.PUT_LINE('NIM = '||:new.nim); DBMS_OUTPUT.PUT_LINE('Nama = '||:new.nama);END;Contoh TriggerCREATE OR REPLACE TRIGGER tg_insertSiswaAFTER DELETE ON siswaFOR EACH ROWBEGIN DBMS_OUTPUT.PUT_LINE('Data Sudah dihapus !!!'); DBMS_OUTPUT.PUT_LINE('Data Yang dihapus :'); DBMS_OUTPUT.PUT_LINE('NIM = '||:old.nim); DBMS_OUTPUT.PUT_LINE('Nama = '||:old.nama);END;Contoh TriggerCREATE OR REPLACE TRIGGER tg_insertSiswaAFTER UPDATE ON siswaFOR EACH ROWBEGIN DBMS_OUTPUT.PUT_LINE('Data LAMA!!!'); DBMS_OUTPUT.PUT_LINE('NIM = '||:old.nim); DBMS_OUTPUT.PUT_LINE('Nama = '||:old.nama); DBMS_OUTPUT.PUT_LINE('Data BARU !!!'); DBMS_OUTPUT.PUT_LINE('NIM = '||:new.nim); DBMS_OUTPUT.PUT_LINE('Nama = '||:new.nama);END;Question ??