Prak05 sbd 24010311130069
-
Upload
sandyn -
Category
Technology
-
view
217 -
download
3
Transcript of Prak05 sbd 24010311130069
STORED PROCEDURE DAN TRIGGER
Mata Kuliah : Sistem Basis Data
Praktikum Ke : 05
DISUSUN OLEH :
Nama : Sandhy Nurlaila Rahmawaty
NIM : 24010311130069
Asisten : Stefanus Sendana, Teguh Budi W, Anggoro W.
JURUSAN ILMU KOMPUTER/INFORMATIKA
FAKULTAS SAINS DAN MATEMATIKA
UNIVERSITAS DIPONEGORO
SEMARANG
2013
BAB I
PERMASALAHAN
Suatu gudang perusahaan menyimpan barang persediaan untuk dijual kepada umum. Barang-
barang yang disimpan di gudang diperoleh dari pengiriman oleh distributor. Jika barang kiriman
datang, otomatis stock akan bertambah, demikian juga apabila ada barang yang keluar dari
gudang karena terjual, maka otomatis stock akan berkurang.
Rancang pemanfaatan stored procedur dan atau trigger untuk pengolahan data persediaan di
gudang suatu perusahaan.
BAB II
DASAR TEORI
A. Delimiter
Delimiter adalah karakter atau string yang memberi tahu MySQL bahwa kita telah
selesai menulis statemen SQL. Sebelumnya, delimiter selalu semicolon (tanda ;). Hal ini
diperlukan karena stored procedure terdiri atas sejumlah statemen, dan setiap pernyataan
harus diakhiri dengan semicolon.
Delimeter dapat diubah misalnya dengan karakter | atau dengan karakter //. Yang perlu
diperhatikan ialah bahwa setelah penggantin tersebut, lakukan pengubahan kembali delimeter
ke karakter yang sebelumnya, yaitu berupa karakter ;.
B. Store Procedure
Stored procedure adalah prosedur (seperti subprogram dalam bahasa pemrograman)
yang disimpan di dalam database. Stored prosedur sama halnya dengan procedure yang ada
pada bahasa pemrograman C, C++, pascal dll.
MySQL mendukung dua jenis subprogram, yaitu:
stored procedure yang dapat dipanggil untuk dieksekusi,
fungsi yang menghasilkan nilai yang dapat dipakai dalam statemen SQL lain.
Persiapan Sebelum Menjalankan Store Procedure dan Trigger
Sebelum menggunakan store procedure ataupun trigger, kita perlu mengecek terlebih
dahulu versi MySQL yang telah terinstal pada PC kita, karena tidak semua versi dapat bekerja
dengan store procedure dan trigger. Contoh :
Tampilan tersebut berarti, versi MySQL yang digunakan adalah ‘5.5.28’, berarti strored
procedure akan dapat bekerja.
Sebelum melakukan pembuatan stored procedure dan trigger, kita awali terlebih dahulu dengan
pembuatan database dan tabel baru. Nantinya stored procedure dan trigger akan disiapkan
empat table, yaitu: test1, test2, test3, dan test4.
Untuk keperluan latihan pembuatan trigger, pada posisi awal tabel yang akan diisi ialah test3
dan test4.
Nilai pada kolom a4 berasal dari urutan angka yang ditentukan oleh computer karena saat
pembuatan tabel, a4 didefinisikan sebagai auto_incement.
Untuk test1 dan test2 sementara masih belum diisi data.
Contoh Store Procedure :
Berikut akan diberikan contoh pembuatan stored prosedur yang eksekusinya akan terjadi
apabila stored prosedur tersebut dipanggil dengan menggunakan CALL.
Prosedur dengan nama tampiltest4 berikut hanya berisi perintah untuk menampilkan isi tabel
test4 (di tulis diantara BEGIN … END).
Tahapan perintah untuk pembuatan prosedur tersebut adalah sebagai berikut:
Perhatikan perintah-perintah tersebut di atas diawali dengan pemberian delimeter berupa
tanda //, dan diakhiri dengan pengembalian delimeter ke tanda ;.
Berikut adalah perintah untuk memanggil prosedur tampiltest4 agar dilaksanakan eksekusi, dan
hasilnya diberikan pada tampilan pada baris-baris berikutnya.
C. Trigger
Trigger adalah sebuah Script MySQL Command yang memicu suatu kejadian dalam database
MySQL berupa aksi manipulasi database secara otomatis setelah syarat tertentu. Lokasi
penulisan Trigger adalah di dalam database yang bersangkutan.
The trigger_event dapat berupa salah satu dari tiga kejadian berikut:
1. INSERT: trigger akan diaktifkan jika suatu baris baru disisipkan ke dalam tabel; sebagai
contoh, melalui pernyataan INSERT, LOAD DATA, dan REPLACE.
2. UPDATE: trigger diaktifkan jika suatu baris dimodifikasi; sebagai contoh, melalui pernyataan
UPDATE.
3. DELETE: trigger diaktifkan jika suatu baris dihapus dari tabel; sebagai contoh, melalui
pernyataan DELETE dan REPLACE. Pernyataan DROP TABLE dan TRUNCATE TABLE pada tabel
tidak mengaktifkan trigger ini, karena keduanya tidak menggunakan DELETE.
Sebagai contoh setelah insert pada tabel_a dan kolom a1 maka akan otomatis insert pada
tabel_b pada kolom b1. Begitu pula untuk aksi update dan delete.
Contoh pemakaian trigger adalah sebagai berikut:
1. Melakukan update data otomatis jika terjadi perubahan. Contohnya adalah dalam sistem
penjualan, jika dientri barang baru maka stock akan bertambah secara otomatis.
2. Trigger dapat digunakan untuk mengimplementasikan suatu sistem log. Setiap terjadi
perubahan, secara otomatis akan menyimpan ke tabel log.
3. Trigger dapat digunakan untuk melakukan validasi dan verifikasi data sebelum data tersebut
disimpan.
Berikut ini bentuk umum perintah untuk membuat triggers:
CREATE TRIGGER name
[BEFORE|AFTER][INSERT|UPDATE|DELETE]
ON tablename
FOR EACH ROW statement
Keterangan dari bentuk umum perintah membuat trigger:
name, nama trigger mengikuti peraturan penamaan variabel / identifier dalam MySQL
[BEFORE|AFTER] digunakan untuk menentukan kapan proses secara otomatis akan
dieksekusi, sebelum atau sesudah proses.
[INSERT|UPDATE|DELETE] digunakan untuk menentukan event (proses) yang dijadikan
trigger (pemicu) untuk menjalankan perintah-perintah di dalam triggers.
tablename, merupakan nama tabel dimana trigger berada.
statement, merupakan sekumpulan perintah atau query yang akan secara otomatis
dijalankan jika event / proses yang didefinisikan sebelumnya aktif.
Bentuk umum dan contoh menghapus trigger:
DROP TRIGGER tablename.triggername;
Contoh Trigger:
Sebelum dilakukan pembuatan trigger perlu disusun skenario apa yang dirancang akan
dilaksanakan secara otomatis apabila trigger tersebut dieksekusi.
Misal dari keempat tabel yang sudah diberikan sebelumnya, yaitu: tets1, test2, tetst3, dan test4
dirancang suatu respon sebagai berikut:
Jika terjadi INSERT terhadap tabel test1, maka sebelumnya akan dilaksanakan sebagai berikut:
Semua data yang diisikan ke dalam tabel test1 juga disisipkan ke dalam tabel test2.
Hapus record di test3 jika isi a3 = a1 (yang dimaksud adalah a1 yang baru).
Update nilai dari b4 di dalam test4 dengan rumus b4 = b4 + 3 jika nilai b4 = a1 (yang
dimaksud adalah a1 yang baru).
Pertama di-create dulu trigger dengan nama isitabel yang disesuaikan dengan ketentuan di atas.
Di dalam penulisan di atas untuk delimeter digunakan tanda |.
Untuk melihat efek yang dihasilkan dari trigger di atas, sebelumnya dilakukan insert data ke
dalam tabel test1. Hasil insert data kemudian ditampilkan untuk dicek.
Tabel test2 setelah dilakukan insert menggunakan trigger:
insert into test2 set a2=new.a1;
Tabel test3 setelah dilakukan penghapusan menggunakan trigger:
delete from test3 where a3=new.a1;
Tabel test4 setelah dilakukan update nilai terhadap b4 menggunakan trigger:
update test4 set b4=b4+3 where b4=new.a1;
BAB III
PEMBAHASAN
Diasumsikan sebuah gudang perusahaan property menyimpan beberapa persediaan barang untuk dijual
kepada umum. Barang-barang yang disimpan di gudang diperoleh dari pengiriman oleh distributor. Jika
barang kiriman datang, otomatis stock akan bertambah, demikian juga apabila ada barang yang keluar
dari gudang karena terjual, maka otomatis stock akan berkurang.
Langkah pertama, yaitu membuat database baru:
create database perusahaan; sehingga bila pembuatan database perusahaan berhasil, akan bertambah satu database pada
computer.
Langkah kedua adalah membuat tabel barang.
use perusahaan;
CREATE TABLE barang
(kdbarang char(5) PRIMARY KEY,
namabarang varchar(20) not null,
jumlah int)
Mengisi data pada tabel barang.
INSERT INTO barang
VALUES
("br001", "Semen", 100),
("br002", "Kayu", 25),
("br003", "Batu Bata", 200),
("br004", "Cat Tembok", 10),
("br004", "Besi", 35)
Membuat procedure showbarang() untuk menampilkan isi tabel barang. \d //
create procedure showbarang()
begin
select * from barang;
end
//
\d ;
\d // digunakan untuk mengubah delimiter ; menjadi //.
\d ; digunakan untuk mengembalikan delimiter ke ;.
Untuk pemanggilannya, kita tidak perlu panjang-panjang mengetikan select * from
barang. Kita hanya perlu mengetikan call showbarang .
Membuat tabel persediaan
create table persediaan
(kdbarang char(5) primary key,
penambahan int,
penjualan int);
Membuat trigger t1 agar jumlah barang setelah proses pengiriman barang dari distributor dan
penjualan barang selalu up to date.
create trigger t1 before insert on persediaan
for each row begin
update barang set jumlah=jumlah+new.penambahan new.penambahan>0;
update barang set jumlah=jumlah-new.penjualan new.penjualan>0;
end;
Pengisian tabel persediaan
insert into persediaan
values
("br001",0,5),
("br002",0,0),
("br003",0,25),
("br004",30,0),
("br004",20,0);
Selanjutnya kita dapat melakukan pengecekan kembali terhadap tabel barang yang telah kita
buat sebelumnya denga perintah call showbarang();
BAB IV
PENUTUP
Kesimpulan
Sebelum membuat trigger ataupun store procedure, kita harus melakukan pengaturan terhadap
delimeter.
Stored procedure adalah prosedur (seperti subprogram dalam bahasa pemrograman C, pascal
dll.) yang disimpan di dalam database.
Trigger adalah sebuah objek database yang diasosiasikan dengan sebuah tabel dan aktif 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 yaitu BEFORE dan AFTER dari statement SQL-nys.