trigger - BLOGdetik

advertisement
TRIGGER
SYAIFUL HUDA, S.Kom
TRIGGER



Trigger  obyek didalam database yang
berasosiasi dengan suatu tabel
Trigger  dapat diaktifasi ketika tabel tersebut
dikenai event tertentu
Event  suatu kejadian yang menimpa tabel, bisa
berupa penambahan, perubahan maupun
penghapusan data
ALASAN MENGGUNAKAN
TRIGGER


Trigger berfungsi untuk mengeksekusi satu atau
sekumpulan perintah SQL secara otomatis ketika
menambah, mengubah maupun menghapus sebuah
baris data dalam suatu tabel
Karena fungsi tersebut dalam pendefinisianya,
trigger di tanam atau diasosiakan dengan sebuah
tabel tertentu
MANFAAT TRIGGER



Trigger dapat menguji validitas data yang akan
dimasukkan maupun yang akan digunakan untuk
melakukan perubahan
Trigger dapat memperoleh nilai lama dari baris
data yang akan dihapus atau diubah (misalnya
untuk keperluan pencatatan histori data dari
suatu tabel)
Trigger dapat mengubah nilai kolom pada tabel
lain
MANFAAT TRIGGER


Trigger juga dapat meringankan proses lojik dari
aplikasi atau stored procedure yang dikembangkan
Alasanya  proses validasi data sudah ditangani
oleh trigger sehingga dalam aplikasi tidak perlu
menuliskan kode program untuk melakukan hal
tersebut.
KONSEP TRIGGER



Trigger adalah obyek database yang berisi
kumpulan perintah SQL yang akan di eksekusi
atau diaktifasi ketika suatu event terjadi
Dalam suatu database  dapat di definisikan
lebih dari satu trigger asalkan nama dari masingmasing trigger berbeda
Trigger harus berasosiasi dengan tabel tertentu
sebagai pemicu trigger untuk menentukan kapan
trigger bersangkutan dieksekusi
KONSEP TRIGGER

Trigger memiliki event : BEFORE INSERT,
AFTER INSERT, BEFORE UPDATE,
AFTER UPDATE, BEFORE DELETE,
AFTER DELETE

Trigger memiliki referensi NEW dan OLD
EVENT TRIGGER


Event
 peristiwa atau kejadian yang
menunjukkan kapan suatu trigger akan diaktifasi
Contoh : jika mendefinisikan trigger pada tabel
BUKU dengan event AFTER INSERT, maka
trigger akan diaktifasi setiap kali user melakukan
penambahan data pada tabel BUKU
EVENT TRIGGER
EVENT
KETERANGAN
BEFORE INSERT
Trigger akan diaktivasi sesaat sebelum
data ditambahkan ke dalam suatu tabel
AFTER UPDATE
Trigger akan diaktivasi sesaat setelah data
ditambahkan ke dalam suatu tabel
BEFORE UPDATE
Trigger akan dieksekusi sesaat sebelum
data dalam suatu tabel diubah
AFTER UPDATE
Trigger akan diaktivasi sesaar setelah data
dalam suatu tabel diubah
BEFORE DELETE
Trigger akan diaktivasi sesaat sebelum
data dihapus dari suatu tabel
AFTER DELETE
Trigger akan diaktivasi sesaat setelah data
dihapus dari suatu tabel
MEMBUAT TRIGGER
CREATE TRIGGER <nama trigger>
(BEFORE | AFTER)
(INSERT | UPDATE | DELETE)
ON <nama tabel>
FOR EACH ROW
BEGIN
<badan trigger>
END
CONTOH TRIGGER
DELIMITER $$
CREATE TRIGGER tr_ai_pasien
AFTER INSERT
ON pasien
FOR EACH ROW
BEGIN
INSERT INTO histori_pasien VALUES (
NEW.kode_pasien,
NEW.kode_dokter,
NEW.nama_pasien,
NEW.tgl_lahir,
NEW.alamat,
‘INSERT', NOW());
END$$
CEK PENGARUH TRIGGER


Coba tambahkan data baru ke dalam tabel
pasien:
INSERT INTO pasien VALUES(‘1111-01-1’,’
D-01’,’ SUWARNO’,’ 1977-08-01’,’ JETIS
DAGANGAN MADIUN’);
Coba periksa tabel histori_pasien :
SELECT * FROM histori_pasien;
REFERENSI TRIGGER NEW
DAN OLD


NEW  sebagai referensi dari baris data yang
akan dimasukkan atau yang akan digunakan
untuk mengubah data
OLD  sebagai referensi dari baris data yang
akan ditimpa dengan data baru (melalui perintah
UPDATE) dan dihapus (melalui perintah
DELETE)
PENTINGNYA TRIGGER ???



Pada saat mengeksekusi INSERT, database hanya
memiliki referensi NEW yang berfungsi untuk
menampung nilai-nilai kolom dari baris baru yang akan
dimasukkan
Pada saat mengeksekusi UPDATE, database memliki
referensi NEW dan OLD. NEW  menampung nilai
kolom yang akan digunakan untuk melakukan
perubahan sedangkan OLD  berfungsi menampung
nilai-nilai lama pada semua kolom yang ada dalam tabel
bersangkutan
Pada saat mengeksekusi DELETE, database hanya
memiliki referensi OLD yang berfungsi untuk
menampung nilai-nilai kolom dari baris data yang
dihapus
MENGHAPUS TRIGGER



Perintah menghapus trigger dari database
dengan perintah DROP TRIGGER
DROP TRIGGER [<nama database>], <nama
trigger>;
DROP TRIGGER BUKUDB.tr_ai_buku;
Atau DROP TRIGGER tr_ai_buku;
HAK AKSES BEKERJA DENGAN
TRIGGER


Dalam pembuatan dan penghapusan trigger di
dalam database, seorang user harus memiliki hak
akses SUPER
Jika didalam trigger, kita menggunakan referensi
NEW dan OLD harus ada hak akses tambahan
yang diberikan
Untuk mengisi nilai kolo dengan perintah SET
NEW <nama kolom = <nilai>, user bersangkutan
harus memiliki hak akses UPDATE
 Untuk menggunakan NEW, <nama kolom> user
bersangkutan harus memiliki hak akses SELECT

BATASAN TRIGGER



Kita tidak dapat menggunakan perintah CALL
(perintah untuk mengeksekusi stored procedure)
Kita tidak dapat melakukan transaksi (misalnya
COMMIT dan ROOLBACK)
Kita tidak dapat membuat trigger untuk tabel
temporari
Download