tugas3=# \d stokbarabf;
Did not find any relation named
"stokbarabf".
tugas3=# \d stokbarang;
- Berikut membuat Tabel Sok Barang
Table "public.stokbarang"
Column | Type
| Modifiers
------------------------+------------------+-----------
kode_barang | character(5)
| not null
nama_barang | character(30)
|
stok_ketersediaan | integer
|
Indexes:
"stokbarang_pkey" PRIMARY
KEY, btree (kode_barang)
Referenced by:
TABLE "pembelian"
CONSTRAINT "pembelian_kode_barang_fkey" FOREIGN KEY
(kode_barang) REFERENCES stokbarang(kode_barang)
- Membuat Tabel Pembelian
tugas3=# \d pembelian;
Table "public.pembelian"
Column | Type
| Modifiers
-------------------+-----------------+-----------
kode_barang | character(20) |
jumlah_beli | integer
|
Foreign-key constraints:
"pembelian_kode_barang_fkey"
FOREIGN KEY (kode_barang) REFERENCES stokbarang(kode_barang)
- pada 2 tabel diatas sudah di relasikan, kemudian kita buat functionnya.
tugas3=# CREATE OR REPLACE FUNCTION
update_stok() RETURNS TRIGGER as '
tugas3'# DECLARE
tugas3'# current_stok int4;
tugas3'# BEGIN
tugas3'# update stokbarang set
stok_ketersediaan=stok_ketersediaan-new.jumlah_beli where
kode_barang=new.kode_barang;
tugas3'# return new;
tugas3'# end;
tugas3'# ' LANGUAGE 'plpgsql';
CREATE FUNCTION
- update stokbarang set stok_ketersediaan=stok_ketersediaan-new.jumlah_beli where kode_barang=new.kode_barang;return new;
- mengupdate tabel stokbarang pada kolom stok_ketersediaan=(stok_ketersediaan dikurangi jumlah_beli ) nilai jumlah beli diambil saat mengimputkan jumlah _beli pada table pembelian, karena trigger ini dipanggil setelah mengisi data pada tabel pembelian.
- Kemudian kita masukkan data stokbarang.
tugas3=# insert into stokbarang
values('10023','sikat gigi',50);
INSERT 0 1
tugas3=# insert into stokbarang
values('10024','sabun mandi',50)
tugas3-# insert into stokbarang
values('10024','sabun mandi',50);
tugas3=# insert into stokbarang
values('10024','sabun mandi',50);
INSERT 0 1
- Membuat trigger dengan nama “update_stok”
tugas3=# CREATE TRIGGER update_stok
tugas3-# AFTER INSERT ON pembelian
tugas3-# FOR EACH ROW
tugas3-# EXECUTE PROCEDURE
update_stok();
CREATE TRIGGER
- maksud dari query diatas, membuat trigger namanya update_stok dan akan dijalankan setelah proses pemasukan/insert di tabel pembelian, isi dari trigger ini adalah memanggil function update_stok(); yang sudah kita buat tadi.
tugas3=#
tugas3=# select * from stockbarang;
tugas3=# select * from stokbarang;
kode_barang | nama_barang |
stok_ketersediaan
-------------+---------------------------+-------------------
10023 | sikat gigi
| 50
10024 | sabun mandi
| 50
(2 rows)
- Terlihat stok barang yang telah kita masukkan tadi, dengan kode_barang, nama_barang, dan stok_barang. kedua barang mempunyai stok yang masih utuh ( 50 ).
- Selanjutnya masukkan data ke tabel pembelian, kita misalkan ada pembelian membeli barang yang ( kode_barangnya 10023 dan jumlah barang yang dibeli 5 ) , setelah proses insert berhasil maka trigger akan otomatis berjalan ( memanggil function yang telah dibuat tadi ) , cara kerja function ( mengurangi stok ) dapat dilihat pada penjelasan diatas.
- Setelah itu kita lihat apakah trigger kita berhasil memanggil function untuk mengpdate stokbarang dengan cara ketik “SELECT * from stokbarang” .
tugas3=# insert into pembelian
(kode_barang,jumlah_beli) values('10023','5');
INSERT 0 1
tugas3=# select * from stokbarang;
kode_barang | nama_barang
| stok_ketersediaan
-------------+-----------------------------+-------------------
10024 | sabun mandi
| 50
10023 | sikat gigi
| 45
(2 rows)
- Kita lihat stok_ketersediaan pada kode_barang =10023 berubah menjadi 45 ( hasil dari 50 -5 )


