30
TRIGGER 0 6 / 1 1 / 2 0 2 2 P e m r o g r a m a n B a s i s D a t a 1

Pert 4 1--_trigger

Embed Size (px)

Citation preview

Page 1: Pert 4 1--_trigger

05/01/2023Pem

rograman Basis Data

1

TRIGGER

Page 2: Pert 4 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

Page 3: Pert 4 1--_trigger

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

Page 4: Pert 4 1--_trigger

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

Page 5: Pert 4 1--_trigger

05/01/2023

5

Pemrogram

an Basis Data

DML TRIGGERS Dijalankan sebelum (before) atau setelah

(after) INSERT, UPDATE, DELETE

Page 6: Pert 4 1--_trigger

05/01/2023

6

Pemrogram

an Basis Data

SYSTEM TRIGGERS Dijalankan setelah operasi system, seperti

startup, shutdown, dan pembuatan object.

Page 7: Pert 4 1--_trigger

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).

Page 8: Pert 4 1--_trigger

05/01/2023

8

Pemrogram

an Basis Data

MEMBUAT TRIGGER Syntax Trigger:

Page 9: Pert 4 1--_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

Page 10: Pert 4 1--_trigger

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.

Page 11: Pert 4 1--_trigger

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:

Page 12: Pert 4 1--_trigger

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

Page 13: Pert 4 1--_trigger

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

Page 14: Pert 4 1--_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

Page 15: Pert 4 1--_trigger

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

Page 16: Pert 4 1--_trigger

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

Page 17: Pert 4 1--_trigger

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.

Page 18: Pert 4 1--_trigger

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

Page 19: Pert 4 1--_trigger

05/01/2023

19

Pemrogram

an Basis Data

MEMBUAT SYSTEM TRIGGERS Syntax system trigger

Mengelola DATABASE TRIGGER system privilege diperlukan untuk membuat system trigger

Page 20: Pert 4 1--_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

Page 21: Pert 4 1--_trigger

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

Page 22: Pert 4 1--_trigger

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.

Page 23: Pert 4 1--_trigger

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.

Page 24: Pert 4 1--_trigger

05/01/2023

24

Pemrogram

an Basis Data

PRIVILEGES CREATE TRIGGER CREATE ANY TRIGGER ALTER ANY TRIGGER DROP ANY TRIGGER ADMINISTER DATABASE TRIGGER

Page 25: Pert 4 1--_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

Page 26: Pert 4 1--_trigger

05/01/2023

26

Pemrogram

an Basis Data

MENGHAPUS TRIGGER

Page 27: Pert 4 1--_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:

Page 28: Pert 4 1--_trigger

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:

Page 29: Pert 4 1--_trigger

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.

Page 30: Pert 4 1--_trigger

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!