14
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

Prak05 sbd 24010311130069

  • Upload
    sandyn

  • View
    217

  • Download
    3

Embed Size (px)

Citation preview

Page 1: 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

Page 2: Prak05 sbd 24010311130069

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.

Page 3: Prak05 sbd 24010311130069

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.

Page 4: Prak05 sbd 24010311130069

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.

Page 5: Prak05 sbd 24010311130069

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.

Page 6: Prak05 sbd 24010311130069

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.

Page 7: Prak05 sbd 24010311130069

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.

Page 8: Prak05 sbd 24010311130069

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;

Page 9: Prak05 sbd 24010311130069

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;

Page 10: Prak05 sbd 24010311130069

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)

Page 11: Prak05 sbd 24010311130069

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 ;

Page 12: Prak05 sbd 24010311130069

\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;

Page 13: Prak05 sbd 24010311130069

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();

Page 14: Prak05 sbd 24010311130069

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.