Membuat trigger di PostgreSQL

Pertama kita akan buat tabel terlebih dahulu, kita akan buat tabel stokbarang, dan pembelian.
Membuat tabel stokbarang

CREATE TABLE stokbarang(
kode_barang character varying(20) NOT NULL,
nama_barang character varying(30),
stok_ketersediaan integer,
CONSTRAINT stokbarang_pkey PRIMARY KEY (kode_barang)
)WITH (
OIDS=FALSE
);
ALTER TABLE stokbarang OWNER TO postgres;
Membuat table pembelian
——————————————————————
CREATE TABLE pembelian(
kode_barang character varying(20),
jumlah_beli integer,
CONSTRAINT pembelian_kode_barang_fkey FOREIGN KEY (kode_barang)
REFERENCES stokbarang (kode_barang) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)WITH (
OIDS=FALSE
);
ALTER TABLE pembelian OWNER TO postgres;
——————————————————————
pada 2 tabel diatas sudah di relasikan, kemudian kita buat functionnya.
——————————————————————
CREATE OR REPLACE FUNCTION update_stok()
RETURNS trigger AS
$BODY$
begin
update stokbarang set stok_ketersediaan=stok_ketersediaan-new.jumlah_beli where kode_barang=new.kode_barang;
return new;
end;
$BODY$
LANGUAGE ‘plpgsql’ VOLATILE
COST 100;
ALTER FUNCTION update_stok() OWNER TO postgres;

akan saya jelaskan sedikit, isi function diatas .
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.
insert into stokbarang values(‘10023′,’sikat gigi’,50)
insert into stokbarang values(‘10024′,’sabun mandi’,50)
Membuat trigger dengan nama “update_stok”
——————————————————————
CREATE TRIGGER update_stok
AFTER INSERT ON pembelian
FOR EACH ROW
EXECUTE PROCEDURE update_stok();
——————————————————————
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.
Untuk lebih jelasnya lihat contoh proses berikut ini.
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” .
Kita lihat stok_ketersediaan pada kode_barang =10023 berubah menjadi 45 ( hasil dari 50 -5 )
trigger berhasil..
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s