Integritas Basis Data Triggers, Store Procedure D. Sinaga, M.Kom
Trigers (Pemicu)
Trigger (Pemicu) Trigger merupakan pernyataan yang dieksekusi secara otomatis oleh sistem basis data sebagai akibat dari perubahan basis data. Ada beberapa persyaratan yang harus dipenuhi untuk merancang mekanisme trigger, yaitu: 1. Menspesifikasikan kapan trigger harus dieksekusi. 2. Menspesifikasik perintah yang akan dilaksanakan ketika trigger dijalankan.
Trigers (lanj) Sistem basis data yang berbasis SQL pada umumnya menggunakan trigger, walaupun sebelum versi SQL:1999 belum dimasukkan ke dalam standar SQL. Hanya saja setiap sistem basis data menerapkan trigger melalui syntax yang berbeda-beda. Syntax SQL:1999 mirip dengan syntax trigger pada IBM DB2 dan Oracle.
Trigers (lanj) Trigger sebenarnya tidak lain adalah suatu pemrograman PL/SQL yang mirip dengan procedure. Perbedaan mendasar dengan procedure adalah aktivasinya, dimana procedure dapat dipanggil secara langsung sementara trigger dipanggil melalui pemicu yang berupa bahasa DML (Data Manipulation Language). Bahasa DML yang digunakan sebagai pemicu adalah insert, update dan delete.
Contoh : Trigers Sebelum melakukan perbaikan atau update simpan data dari pelanggan terlebih dahulu. CREATE TRIGGER triggerName AFTER UPDATE INSERT INTO CustomerLog (blah, blah, blah) SELECT blah, blah, blah FROM deleted Berbedan dengan assertion adalah beberapa dbms tidak support
Triggers dengan Mysql
Stored Procedure Adalah sebuah kelompok kode SQL yang disimpan di katalog database dan dapat dipanggil kemudian oleh program, trigers atau bahkan stored procedure. Stored Procedure yang memanggil diri nya sendiri di sebut rekursif stored procedure. Mysql sendiri mendukung penggunaan Stored Procedure sejak MySQL versi 5.x ke atas.
Diagram Stored Procedure
Keuntungan penggunaan Stored Procedure Meningkatkan performance aplikasi. Sebuah Stored Procedure di simpan dan di compile di katalog database yang mana dapat di eksekusi lebih cepat di bandingkan SQL yang tidak di compile dari kode aplikasi. Mengurangi traffic antara aplikasi dan database server. Aplikasi hanya mengirim nama stored procedure untuk mengeksekusi SQL. Dapat di gunakan kembali dan transparent ke aplikasi yang ingin menggunakan nya. Aman.
Kerugian penggunaan Stored Procedure Dapat mengakibatkan Database server membutuhkan memory dan prosessor lebih tinggi. Stored procedure hanya berisi SQL deklaratif, sehingga sangat sulit untuk menulis sebuah procedure dengan kompleksitas logika, seperti bahasa pemrograman yang di gunakan untuk memprogram aplikasi. Stored procedure tidak dapat di debug di hampir RDBMS, termasuk MySQL. Membutuhkan keahlian khusus untuk menulis dan me maintain stored procedure yang tidak setiap developer memiliki, sehingga dapat membuat ribet
Membuat stored procedure delimeter // create procedure nama_mhs() begin select * from mahasiswa; end // delimeter ; Kita memulai nya dengan delimeter //dan di akhiri dengan // delimeter ; Body sql di mulai dengan begin dan di akhiri dengen end.
Memanggil Stored Procedure call nama_stored_procedure( ) Contoh : call nama_mhs( );
Variable dalam Stored Procedure Variabel di gunakan untuk menyimpan prosedure ke penyimpanan hasil dengan segera. Anda dapat mendeklarasikan sebuah variabel dengan syntax berikut : DECLARE nama variabel tipe data (ukuran) DEFAULT nilai default; Contoh : DECLARE total_sales INT DEFAULT 0
Contoh Stored Procedure DELIMITER $$ DROP PROCEDURE IF EXISTS Kata()$$; CREATE PROCEDURE Kata() BEGIN SELECT ‘UDINUS’; END$$ DELIMITER ; mysql> use coba; Database changed mysql> CALL Kata(); +——–+ | UDINUS | +——–+ +——–+ | UDINUS | +——–+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.00 sec)
Stored Procedure(lanj) Variabel Variabel dalam bahasa SQL, fungsinya sama dengan bahasa pemrograman paxda umumnya. Perintahnya menggunakan DECLARE, dan untuk memberikan nilai menggunakan perintah SET. Parameter Parameter adalah suatu nilai yanga akan dilewatkan atau dimasukan untuk diproses dalam fungsi atau prosedure.
Stored Procedure(lanj) Contoh DELIMITER$$ CREATE PROCEDURE Demo_Var() BEGIN DECLARE x int; DECLARE y int; SET x=10; SET y=20; SELECT x+y; END$$; DELIMITER;
Stored Procedure(lanj) CALL Demo_var Hasil +——+ | x+y | +——+ | 30 | +——+ 1 row in set (0.00 sec) Sebuah Procedure dengan mengunakan parameter masukan, akan diproses dalam fungsi dan kemudian timapilkan, hasilnya.
Contoh : DELIMITER$$ CREATE PROCEDURE my_akar(masukan INT) BEGIN DECLARE hasil FLOAT; SET hasil= SQRT(masukan); SELECT hasil; END$$; DELIMITER; Cara memanggil prosedur CALL my_akar(25); Hasil keluaran sebagai berikut : mysql> CALL my_akar(25); +——-+ | hasil | +——-+ | 5 | +——-+ 1 row in set (0.03 sec) Query OK, 0 rows affected (0.05 sec)
Pertanyaan : Jelaskan pentingya sebuah Integritas Basis Data, berikan contohnya. Sebutkan jenis-jenis integritas sistem data base yang dapat digunakan dalam pengolahan data bases.
Terima kasih