Upload
abrianto-nugraha
View
72
Download
0
Embed Size (px)
Citation preview
05/01/2023Pem
rograman Basis Data
1
TRIGGER
05/01/2023
2
Pemrogram
an Basis Data
PENDAHULUAN Trigger 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
05/01/2023
3
Pemrogram
an Basis Data
TRIGGER Trigger tersimpan berdiri sendiri, bukan
merupakan bagian dari package Trigger tidak mempunyai parameter Dipanggil pada saat DML, database
startup/shutdown, dan pada operasi DDL tertentu
05/01/2023
4
Pemrogram
an Basis Data
JENIS-JENIS TRIGGERTrigger digunakan untuk: Maintain integritas konstrain yang komplek Informasi auditing (siapa yang melakukan
perubahan dan kapan) Memanggil program yang lain
05/01/2023
5
Pemrogram
an Basis Data
DML TRIGGERS Dijalankan sebelum (before) atau setelah
(after) INSERT, UPDATE, DELETE
05/01/2023
6
Pemrogram
an Basis Data
SYSTEM TRIGGERS Dijalankan setelah operasi system, seperti
startup, shutdown, dan pembuatan object.
05/01/2023
7
Pemrogram
an Basis Data
MEMBUAT TRIGGER Oracle 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).
05/01/2023
8
Pemrogram
an Basis Data
MEMBUAT TRIGGER Syntax Trigger:
05/01/2023
9
Pemrogram
an Basis Data
MEMBUAT TRIGGERKeterangan: REPLACE digunakan untuk mengganti isi
trigger jika nama trigger yang dibuat sudah ada sebelumnya
BEFORE digunakan untuk mendeklarasikan bahwa trigger yang dibuat itu akan dieksekusi sebelum sebuah statement SQL dilakukan
AFTER digunakan untuk mendeklarasikan bahwa trigger yang dibuat itu akan dieksekusi setelah sebuah statement SQL dilakukakan
Statement yang dimaksud disini adalah statement SQL dalam DML
05/01/2023
10
Pemrogram
an Basis Data
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.
05/01/2023
11
Pemrogram
an Basis Data
PENGARUH TRIGGER Untuk memeriksa trigger yang telah dibuat
tersebut, maka begitu dilakukan update terhadap table mhs, maka hasil yang akan tampak adalah sbb:
05/01/2023
12
Pemrogram
an Basis Data
MEMBUAT DML TRIGGERSType-type dari DML Trigger
Category Values commentsStatement
INSERT and/or DELETE and/or UPDATE
Choose operation(s)
Timing BEFORE or AFTER Choose timingLevel FOR EACH ROW or
statement (omit FOR EACH ROW)
Once per DML statement,or once for every row affected
05/01/2023
13
Pemrogram
an Basis Data
URUTAN DML TRIGGER DIJALANKAN1. Sebelum statement level trigger2. Untuk tiap row (for each row) yang
terpengaruha. Sebelum row-level triggerb. Operasic. Setelah row-level trigger
3. Setelah statement level trigger
05/01/2023
14
Pemrogram
an Basis Data
ALIAS DIDALAM TRIGGER Dalam trigger dikenal dengan istilah alias
atau referensi, yaitu sejenis variable yang menyimpan nilai dari suatu kolom didalam table
Alias tersebut terbagi menjadi dua yaitu :new dan :old.
Alias dituliskan didepan nama kolom yang akan diambil nilainya
05/01/2023
15
Pemrogram
an Basis Data
ALIAS DIDALAM TRIGGER(2)Terdapat tiga hal yang perlu dipahami pada
saat menggunakan alias didalam trigger:1. INSERT2. UPDATE3. DELETE
05/01/2023
16
Pemrogram
an Basis Data
1. STATEMENT INSERT Hanya mempunyai alias :new, yaitu variable
yang menyimpan nilai-nilai kolom yang akan dimasukkan kedalam table.
Contoh:
Maka :new.stok_barang akan bernilai 10
05/01/2023
17
Pemrogram
an Basis Data
2. STATEMENT UPDATE Mempunyai alias :new dan :old. Alias :new akan menyimpan nilai-nilai kolom
yang baru Alias :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.
05/01/2023
18
Pemrogram
an Basis Data
3. STATEMENT DELETE Hanya mempunyai alias :old, yaitu variable
yang menyimpan nilai-nilai kolom dari baris yang dihapus dalam sebuah table
05/01/2023
19
Pemrogram
an Basis Data
MEMBUAT SYSTEM TRIGGERS Syntax system trigger
Mengelola DATABASE TRIGGER system privilege diperlukan untuk membuat system trigger
05/01/2023
20
Pemrogram
an Basis Data
PENAMAAN TRIGGER Object oracle secara umum membagi satu
namespace, nama unik (nama package harus bukan nama procedure).
Trigger mempunyai namespace sendiri
05/01/2023
21
Pemrogram
an Basis Data
BATASAN TRIGGER Trigger 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 transaksi
Tidak bisa declare atau mengacu pada LONG atau LONG RAW data
05/01/2023
22
Pemrogram
an Basis Data
CONTOH
Trigger tersebut tetap akan terbuat ke dalam database, namun akan salah pada saat kita melakukan perubahan data (update) terhadap tabel mhs.
05/01/2023
23
Pemrogram
an Basis Data
TRIGGER BODY Secara umum bentuk trigger adalah PL/SQL
procedure. Pengecualian: statement CALL tunggal Digunakan untuk procedure yaitu
pembungkus untuk kode C atau Java.
05/01/2023
24
Pemrogram
an Basis Data
PRIVILEGES CREATE TRIGGER CREATE ANY TRIGGER ALTER ANY TRIGGER DROP ANY TRIGGER ADMINISTER DATABASE TRIGGER
05/01/2023
25
Pemrogram
an Basis DataMENGAKTIFKAN DAN MENONAKTIFKAN TRIGGER Secara 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
05/01/2023
26
Pemrogram
an Basis Data
MENGHAPUS TRIGGER
05/01/2023
27
Pemrogram
an Basis Data
SOAL LATIHAN:1. 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:
05/01/2023
28
Pemrogram
an Basis Data
2. 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:
05/01/2023
29
Pemrogram
an Basis Data
3. 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.
05/01/2023
30
Pemrogram
an Basis Data
4. 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!
5. 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!