Pert 4 1--_trigger

  • Published on
    10-Jan-2017

  • View
    47

  • Download
    0

Embed Size (px)

Transcript

TRIGGER

TRIGGER

10/2/2014Pemrograman Basis Data1

PendahuluanTrigger adalah blok PL/SQL yang disimpan dalam database dan akan diaktivasi ketika Anda melakukan statement-statement SQL (Insert, Update, dan Delete) pada sebuah table.Implementasi: mengeset/mengubah nilai kolom suatu table sehingga validasi nilai dari table tersebut akan terjaga

10/2/2014Pemrograman Basis Data2

TriggerTrigger tersimpan berdiri sendiri, bukan merupakan bagian dari packageTrigger tidak mempunyai parameterDipanggil pada saat DML, database startup/shutdown, dan pada operasi DDL tertentu10/2/2014Pemrograman Basis Data3

Jenis-jenis TriggerTrigger digunakan untuk:Maintain integritas konstrain yang komplekInformasi auditing (siapa yang melakukan perubahan dan kapan)Memanggil program yang lain

10/2/2014Pemrograman Basis Data4

DML TriggersDijalankan sebelum (before) atau setelah (after) INSERT, UPDATE, DELETE

10/2/2014Pemrograman Basis Data5

System TriggersDijalankan setelah operasi system, seperti startup, shutdown, dan pembuatan object.

10/2/2014Pemrograman Basis Data6

Membuat TriggerOracle telah menyediakan statement CREATE TRIGGER untuk membuat sebuah trigger yang selanjutnya akan diaktivasi berdasarkan event tertentu.Secara umum, event trigger terbagi menjadi dua, yaitu BEFORE (sebelum) dan AFTER (sesudah).

10/2/2014Pemrograman Basis Data7

Membuat TriggerSyntax Trigger:

10/2/2014Pemrograman Basis Data8

Membuat TriggerKeterangan:REPLACE digunakan untuk mengganti isi trigger jika nama trigger yang dibuat sudah ada sebelumnyaBEFORE digunakan untuk mendeklarasikan bahwa trigger yang dibuat itu akan dieksekusi sebelum sebuah statement SQL dilakukanAFTER digunakan untuk mendeklarasikan bahwa trigger yang dibuat itu akan dieksekusi setelah sebuah statement SQL dilakukakanStatement yang dimaksud disini adalah statement SQL dalam DML

10/2/2014Pemrograman Basis Data9

Contoh Membuat trigger dengan nama tr_coba yang dapat menampilkan teks Table mhs telah di-update setiap kali selesai (AFTER) melakukan update terhadap table mhs.

10/2/2014Pemrograman Basis Data10

Pengaruh TriggerUntuk memeriksa trigger yang telah dibuat tersebut, maka begitu dilakukan update terhadap table mhs, maka hasil yang akan tampak adalah sbb:

10/2/2014Pemrograman Basis Data11

Membuat DML TriggersType-type dari DML Trigger

CategoryValuescommentsStatementINSERT and/or DELETE and/or UPDATEChoose operation(s)TimingBEFORE or AFTERChoose timingLevel FOR EACH ROW or statement (omit FOR EACH ROW)Once per DML statement,or once for every row affected

10/2/2014Pemrograman Basis Data12

Urutan DML trigger dijalankanSebelum statement level triggerUntuk tiap row (for each row) yang terpengaruhSebelum row-level triggerOperasiSetelah row-level triggerSetelah statement level trigger10/2/2014Pemrograman Basis Data13

Alias didalam TriggerDalam trigger dikenal dengan istilah alias atau referensi, yaitu sejenis variable yang menyimpan nilai dari suatu kolom didalam tableAlias tersebut terbagi menjadi dua yaitu :new dan :old.Alias dituliskan didepan nama kolom yang akan diambil nilainya10/2/2014Pemrograman Basis Data14

Alias didalam Trigger(2)Terdapat tiga hal yang perlu dipahami pada saat menggunakan alias didalam trigger:INSERTUPDATEDELETE10/2/2014Pemrograman Basis Data15

1. Statement INSERTHanya mempunyai alias :new, yaitu variable yang menyimpan nilai-nilai kolom yang akan dimasukkan kedalam table.Contoh:

Maka :new.stok_barang akan bernilai 10

10/2/2014Pemrograman Basis Data16

2. Statement UPDATE Mempunyai alias :new dan :old.Alias :new akan menyimpan nilai-nilai kolom yang baruAlias :old menyimpan nilai-nilai kolom asli yang terdapat didalam tabel (nilai sebelum di-update)Misalnya didalam table barang, stok yang tersedia untuk lemari es adalah 20, dan kita akan mengganti (meng-update) jumlah stok tersebut dengan nilai 30, maka :new.stok_barang akan bernilai 30, sedangkan :old.stok_barang bernilai 20.10/2/2014Pemrograman Basis Data17

3. Statement DELETEHanya mempunyai alias :old, yaitu variable yang menyimpan nilai-nilai kolom dari baris yang dihapus dalam sebuah table10/2/2014Pemrograman Basis Data18

Membuat System TriggersSyntax system trigger

Mengelola DATABASE TRIGGER system privilege diperlukan untuk membuat system trigger

10/2/2014Pemrograman Basis Data19

Penamaan TriggerObject oracle secara umum membagi satu namespace, nama unik (nama package harus bukan nama procedure).Trigger mempunyai namespace sendiri10/2/2014Pemrograman Basis Data20

Batasan TriggerTrigger hanya dapat digunakan untuk menuliskan statement-statement DML.

Tidak dapat mengandung perintah DDL (CREATE, ALTER, DROP), DCL-Data Control Language (COMMIT, ROLLBACK,...)Tidak memanggil code yang lain yang menjalankan perintah kontrol transaksiTidak bisa declare atau mengacu pada LONG atau LONG RAW data

10/2/2014Pemrograman Basis Data21

Contoh

Trigger tersebut tetap akan terbuat ke dalam database, namun akan salah pada saat kita melakukan perubahan data (update) terhadap tabel mhs.

10/2/2014Pemrograman Basis Data22

Trigger BodySecara umum bentuk trigger adalah PL/SQL procedure.Pengecualian: statement CALL tunggal Digunakan untuk procedure yaitu pembungkus untuk kode C atau Java.10/2/2014Pemrograman Basis Data23

Privileges CREATE TRIGGERCREATE ANY TRIGGERALTER ANY TRIGGERDROP ANY TRIGGERADMINISTER DATABASE TRIGGER10/2/2014Pemrograman Basis Data24

Mengaktifkan dan menonaktifkan TriggerSecara default trigger dalam keadaan aktif

Dalam database Oracle, trigger tidak selalu dijalankan, tergantung pada setting yang dilakukan terhadap trigger itu sendiri.

Artinya, eksekusi trigger akan dilakukan hanya apabila tigger diset dalam keadaan aktif (ENABLE) dan akan diabaikan keberadaannya apabila trigger tersebut dalam keadaan non-aktif (DISABLE)

Fasfgsagsagsadgsgdsgsdagsadggadsgsdagsadg

10/2/2014Pemrograman Basis Data25

Menghapus Trigger

10/2/2014Pemrograman Basis Data26

Soal Latihan:Buatlah trigger untuk menambahkan jumlah pasok barang yang ada pada tabel barang setiap kali dilakukakn pemasukan (insert) data pada tabel pasok, dimana jumlah yang ditambahkan ke dalam stok barang tersebut adalah jumlah pasok pada saat pemasokan!

Jawaban:10/2/2014Pemrograman Basis Data27

Buatlah trigger untuk mengurangi jumlah stok barang yang ada pada tabel barang setiap kali dilakukan penghapusan (delete) data pada tabel pasok, dimana jumlah yang digunakan untuk pengurangan stok barang tersebut adalah jumlah pasok dari baris yang dihapus pada tabel pasok!

Jawaban:

10/2/2014Pemrograman Basis Data28

Buatlah trigger untuk mengubah jumlah stok barang yang ada pada table barang setiap kali dilakukan perubahan (update) data pada tabel pasok! Perlu diperhatikan bahwa jika nilai perubahan jumlah pasok pada table pasok lebih besar dari jumlah stok barang yang ada pada tabel barang, maka jumlah stok barang akan bertambah, sedangkan jika lebih kecil maka stok barang akan berkurang.

10/2/2014Pemrograman Basis Data29

Buatlah sebuah trigger pada tabel customer agar setiap terjadi proses pemasukan data baru pada tabel tersebut, maka nilai kolom nama_konsumen akan berubah menjadi huruf kapital walaupun pada saat memasukkan data, data yang dimasukkan berupa huruf kecil!Buatlah 3 buah trigger pada tabel pembelian sehingga pada saat memasukkan (insert), mengubah (update) atau menghapus (delete) baris dalam table tersebut, maka jumlah stok barang pada table barang akan ikut berubah sesuai dengan manipulasi data yang dilakukan!10/2/2014Pemrograman Basis Data30