Perubahan isi tabel terjadi pada
saat pengguna melakukan transaksi. Transaksi ini biasanya juga berpengaruh
terhadap tabel-tabel lain. Sebagai contoh : pada saat transaksi penjualan
sistem akan menambah rekaman tabel JUAL sebelum perintah INSERT misalnya
mengecek jumlah stok di tabel BARANG, dan sesudahnya mengurangi stok di tabel
BARANG. Oleh karena itu anda bisa menempatkan trigger yang merupakan prosedur
pemicu untuk melakukan proses sesuai dengan keinginan.
Trigger adalah suatu objek dalam basisdata
yang terdapat pada bagian tabel. Trigger untuk menempatkan suatu prosedure
berkaitan dengan perubahan pada isi tabel. Cara kerja trigger adalah merespon
berkaitan dengan perintah DML (INSERT , UPDATE, DELETE) pada tabel.
Langkah
Pembuatan:
Hidupkan SQLserver dan
buka Mozilla firefox. Siapkan database penjualan yang kita buat pada
postingan yang sebelum nya (Pengolahan Database: ).
Kita akan membuat trigger pada tabel detailbeli dan juga detailjual. Yang pertama kita buat trigger pada tabel detailjual terlebih dahulu. Trigger
yang akan dibuat yaitu untuk ADD, UPDATE & DELETE. Setiap data yang
diinputkan pada detail beli akan
berpengaruh pada tabel barang. Saat
kita inputkan data baru pada tabel detailbeli,maka
akan menambah ‘jumlahstok’ pada tabel barang
sesuai nilai yang dimasukkan pada ‘qty’ pada tabel detailbeli. Begitu juga saat kita mengubah nilai pada ‘qty’ atau
pun menghapus data tersebut, itu akan berpengaruh pada ‘jumlahstok’.
Untuk
membuat trigger maka kita harus SQL query. Pilih
menu SQL dan akan tampil seperti pada gambar dibawah:
·
Untuk
membuat trigger ADD query-nya sperti ini:
CREATE TRIGGER tadddetailbeli
AFTER INSERT ON detailbeli FOR EACH ROW BEGIN UPDATE barang SET
jumlahstok=jumlahstok+new.qty WHERE kodebarang=NEW.kodebarang; END;
Catatan:
Delimiter harus diganti dengan tanda pipa “|”
·
Untuk
membuat trigger UPDATE query-nya sperti ini:
CREATE
TRIGGER tupddetailbeli AFTER UPDATE ON detailbeli FOR EACH ROW BEGIN
UPDATE barang SET jumlahstok=jumlahstok-OLD.qty+NEW.qty WHERE kodebarang=OLD.kodebarang;
end;
·
Untuk
membuat trigger DELETE query-nya sperti ini:
CREATE
TRIGGER tdeldetailbeli AFTER DELETE ON detailbeli FOR EACH ROW BEGIN UPDATE
barang SET jumlahstok=jumlahstok-OLD.qty WHERE kodebarang=OLD.kodebarang; END;
Yang berikutnya kita
membuat Trigger untuk yang tabel detailjual. Pada inti na trigger ini sama dengan
trigger diatas. Karena hanya diubah pada tanda tambah (+) menjadi kurang (-)
atau sebaliknya. Dan kita juga akan membuat
trigger untuk ADD, UPDAT & DELETE.
·
Untuk
membuat trigger ADD query-nya sperti
ini:
CREATE TRIGGER tadddetailjual
AFTER detailjual FOR EACH ROW BEGIN UPDATE barang SET jumlahstok=jumlahstok-new.qty
WHERE kodebarang=NEW.kodebarang; END INSERT ON;
·
Untuk
membuat trigger UPDATE query-nya sperti
ini:
CREATE TRIGGER tupddetailjual
AFTER UPDATE ON detailjual FOR EACH ROW BEGIN UPDATE barang SET jumlahstok=jumlahstok+OLD.qty-NEW.qty
WHERE kodebarang=OLD.kodebarang; end;
·
Untuk
membuat trigger DELETE query-nya sperti
ini:
CREATE TRIGGER tdeldetailjual
AFTER DELETE ON detailjual FOR EACH ROW BEGIN UPDATE barang SET
jumlahstok=jumlahstok+OLD.qty WHERE kodebarang=OLD.kodebarang; END;
Apa bila terjadi
kesalahan pada trigger yang sudah terlanjur kita buat, untuk bisa menggantinya
harus dihapus terlebih dahulu trigger yang sedang digunakan. Query untuk
menghapus trigger:
DROP
TRIGGER namatrigger;
Setelah semua jadi,saatnya
pengechekan. Pastikan bahwa tabel barang dan beli sudah ada data. Kemudian kita
inputkan data baru pada tabel detailbeli. Setelah diinputkan perhatikan field
jumlahstok pada tabel barang sebelum dan sesudah data diinputkan pada tabel
detailbeli, jika triggernya berhasil maka akan terjadi penambahan nilai.
Selamat mencoba ^_^
0 komentar:
Posting Komentar