21
TRIGGER Praktikum Sistem Basis Data agus andri putra, ST.

Trigger Database

Embed Size (px)

DESCRIPTION

Matakuliah Praktikum Sistem Basis Data di Jurusan Teknik informatika UIN Sunan Gunung Djati Bandung

Citation preview

Page 1: Trigger Database

agus andri putra, ST.

TRIGGER Praktikum Sistem Basis Data

Page 2: Trigger Database

agus andri putra, ST.

Definisi Trigger

• Trigger adalah sebuah objek database yang di asosiasikan dengan sebuah tabel dan akan aktif (terpicu/trigger) ketika sebuah event terjadi pada tabel tersebut

• Trigger hanya terjadi ketika ada eksekusi INSERT, DELETE, dan UPDATE pada tabel yang bersangkutan

• Waktu eksekusi trigger yang mungkin terjadi terdiri dari 2 yaitu BEFORE dan AFTER dari statement SQLnya

Page 3: Trigger Database

agus andri putra, ST.

Keuntungan menggunakan Trigger

Trigger dapat digunakan untuk mengubah data sebelum proses INSERT dilakukan atau untuk memberikan nilai default, misalnya mengubah data diluar nilai yang diperbolehkan, contoh : jika ada pengisian nilai diatas 100, maka akan di jadikan 100.

Kita dapat menyimpan data suatu record ke tabel lain ( misalnya history) sebelum data tersebut diupdate atau di delete. Sehingga semua perubahan data dapat dilacak dari sejak data itu di buat

Page 4: Trigger Database

agus andri putra, ST.

STRUKTUR TRIGGER

Page 5: Trigger Database

agus andri putra, ST.

Mengakses nilai baru dan lama Dalam trigger, kita dapat mengakses data

lama dan data baru . Data lama dapat direference dengan record OLD dan data baru dengan record NEW

Untuk mengacu ke sebuah field dapat ditulis dengan NEW.nama_field atau OLD.nama_field

Page 6: Trigger Database

agus andri putra, ST.

Contoh 1 Ada sebuah tabel mahasiswa ( nim, nama,

alamat) Buatlah sebuah trigger yang akan

menyimpan history alamat. Jika sebuah alamat berubah, maka alamat lama harus disimpan di tabel history alamat.

Page 7: Trigger Database

agus andri putra, ST.

Kemudian isi tabel tersebut sesuai dengan type data dan nama field nya

Dan siapkan tabel history untuk penyimpanan selanjutnya :

Page 8: Trigger Database

agus andri putra, ST.

Create trigger

Page 9: Trigger Database

agus andri putra, ST.

Contoh penggunaan trigger

Mengubah data yang sudah dengan :

Maka data yang lama akan disimpan di tabel history_alamat_mahasiswa

Page 10: Trigger Database

agus andri putra, ST.

Untuk bisa melihat alamat yang pernah di pakai oleh nim “1210705138”

Inilah tampilannya :

Page 11: Trigger Database

agus andri putra, ST.

Optimalisasi trigger Trigger pertama mempunyai kekurangan yaitu ketika

ada perubahan di tabel ‘mahasiswa’ walaupun tidak mengubah kolom alamat, maka statement INSERT ditabel history akan dijalankan. Untuk mengoptimalkannya dengan membuat trigger seperti ini :

Page 12: Trigger Database

agus andri putra, ST.

Contoh 2 Buatlah suatu trigger yang akan dieksekusi ketika

ada perubahan NIM di tabel ‘mahasiswa’ yang akan melakukan update ke tabel ‘history_alamat_mahasiswa’ untuk menyesuaikan NIM-nya agar relasinya tidak terlepas

Page 13: Trigger Database

agus andri putra, ST.

Jika kita mengeksekusi trigger tersebut maka akan peringatan yang berisi :

Artinya kita tidak bisa membuat multiple trigger pada sebuah tabel pada waktu dan event yang sama

Solusi yang bisa dilakukan adalah menggabung isi trigger trig_update_mahasiswa dengan isi trigger baru

Page 14: Trigger Database

agus andri putra, ST.

Penggabungan trigger

Trigger baru

Page 15: Trigger Database

agus andri putra, ST.

Perubahan contoh 2

Hasil :

UPDATE mahasiswa SET nim= 1210705140 WHERE nim= 1210705138;Hasil :

Page 16: Trigger Database

agus andri putra, ST.

Keterangan tambahan

Trigger pada contoh sebelumnya bisa dimodifikasi untuk membuat trigger yang akan menghapus semua data pada tabel ‘history_alamat_mahasiswa’ ketika ada penghapusan pada tabel ‘mahasiswa’

Hal tersebut bisa dilakukan dengan membuat trigger “AFTER DELETE ON mahasiswa’ yang akan menghapus semua data pada tabel history_alamat_mahasiswa yang sesuai nim-nya dengan nim dari tabel ‘mahasiswa’ yang akan dihapus (“DELETE FROM history_alamat_mahasiswa WHERE nim=OLD.nim”)

Page 17: Trigger Database

agus andri putra, ST.

Contoh 3

Buatlah suatu trigger yang mencegah perubahan pada primary key tabel ‘mahasiswa’ (field nim). Jika ada perubahan, maka nim tidak boleh berubah

Hal ini dapat dilakukan yaitu dengan mengeset nilai nim yang baru (NEW.nim) dengan nilai yang sama (OLD.nim)

Page 18: Trigger Database

agus andri putra, ST.

Contoh 3Buat trigger baru dengan nama “trig_update_nim_mahasiswa”

Page 19: Trigger Database

agus andri putra, ST.

Hasil

Nim baru , tapi tidak akan berpengaruh

Page 20: Trigger Database

agus andri putra, ST.

Latihan praktek Buatlah sebuah tabel untuk menyimpan data

transaksi transfer yang strukturnya sebagai berikut : NoTransaksi :INT auto_increment WaktuTransaksi :DATETIME NoRekPengirim :INT, FK REF rekening(No) NoRekPenerima :INT, FK REF rekening(No) BesarTransfer :DOUBLE

Jika penambahan data dari tabel transfer (AFTER INSERT ON transfer), maka akan mengupdate saldo pada rekening yang bersangkutan sesuai dengan besar transfer

Kelas IF-A

Page 21: Trigger Database

agus andri putra, ST.

Format laporan hasil praktikum

Kirim ke email :

[email protected] subject :

Prak_Trig(spasi)nim_nama_kelasContoh : Prak_Trig 207700316_agus_IF-ABatas Pengiriman : Sabtu, 23-11- 2013 pukul 23:59 WIB

1. Lampirkan dan tulis kembali apa yang telah di lakukan pada saat praktikum pada file document laporan kalian

2. Kerjakan soal latihan tersebut, dan print screen syntax maupun hasilnya

3. Lampirkan juga database yang telah dibuat oleh kalian

4. Berikan keterangan yang lengkap pada hasil laporan kalian