Wednesday, February 8, 2012

Kali ini saya akan memberi contoh membuat sebuah Trigger Sederhana menggunakan 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..

5 comments:

  1. klo bikin 'triggernya' dari pgAdmin gmn?

    ReplyDelete
  2. Caranya :
    - buka PGadminnya
    - masukkan password jika diminta
    - klik/ pilih databasenya
    - dan klik icon SQL dimenu bagian atas( postgre 8.2 )
    - akan keluar form Query masukkan sintaxnya disitu
    - untuk menjalankan query tekan tombol "run" / F5

    lebih jelasnya bisa lihat gambar disini

    ReplyDelete
  3. mas saya punya kasus seperti ini..nah,cuman tabel stok_barang dan tabel pembelian terletak di 2 database yang berbeda....caranya gimana mas??
    ....sebelumnya terima kasih

    ReplyDelete
  4. When you use a genuine service, you will be able to provide instructions, share materials and choose the formatting style. PostgreSQL NULL value

    ReplyDelete

Propellerads

Popular Posts