Wisha's Weblog

“Dan nikmat Tuhan kamu yang manakah yang dapat kamu dustakan” (QS.Ar-Rahman:13)

2. Belajar PostgreSQL Yeuuh

Tinggalkan komentar

Dalam Postgre SQL terdapat struktur dimulai dari

Database > Schema >kemudian baru tablenya

scheme default saat install postgres adalah public

sehingga ketika anda melakukan query

#select * from tes

dia seakan akan menuliskan alias seperti ini #select * from public.tes

penggunaan RAISE pada plpsql digunakan pada kondisi tertentu

RAISE EXEPTION dapat di gunakan untuk menutup statement else pada penggunaan IF

dan untuk RAISE LOG dan NOTICE memiliki perbedaan yaitu dia akan melakukan

proses walau RAISE telah di jalankan berbeda dengan RAISE EXEPTION dia akan

melakukan stop bila di bawahnya masih ada proses lagi

CREATE ON REPLACE FUNCTION skor_ke_grade (skor int)

RETURNS  char as $$

DECLARE

grade char;

BEGIN

IF skor >=0 AND skor < 20 THEN

grade = ‘E’;

ELSEIF skor >= 20 AND skor < 60 THEN

grade = ‘D’;

ELSEIF skor >= 60 AND skor < 80 THEN

grade = ‘C’;

ELSE

RAISE EXCEPTION ‘Beuuh .. Skor % tidak SAH’, skor;

— ini comment .. setelah RAISE EXCEPTION walau di bawah ada program lanjutan

/*

tetap saja program akan melakukan stop karena tidak sah misal anda buat

statement grade = ‘1’; yg otomatis  nilai 1 adalah ELSE dari semua

statement di atas maka jika RAISE EXCEPTION ketika di query dia langsung error

berbeda jika RAISEanda rubah menjadi RAISE NOTICE misal maka grade = 1 akan

muncul saat di query beserta notice nya.

dan inilah yang membedakan dengan RAISE NOTICE dll dengan RAISE EXCEPTION

*/

END IF;

END;

$$ LANGUAGE ‘plpsql’;

* Menggunakan fungsi TRIGER pada PLPSQL

dimana kita tidak perlu lagi melakukan SUM / penjumlahan pada sebuah table

misal table pembayaran dan pesanan

table pembayaran dengan field

idpesanan | jumlah | bayar

1             |             | 1000

1             |             | 3000

table pesanan dengan field

tltlharga | ttlbayar

20000    | 4000 –> nilai 4000 adalah hasil sum pada field bayar pada table pembayaran

dimana disini TRIGGER function melakukan tugasnya yaitu melakukan penjumlahan

berdasarkan tiap row pada saat insert data pada table pembayaran sehingga secara

otomatis pada table relasinya yaitu pesanan di field ttlbayar akan berjumlah 4000

tergantung prosedural language yang anda buat “plpsql’ berikut scriptnya

— 1) definisi trigger
CREATE OR REPLACE FUNCTION trig_pembayaran_add()
RETURNS TRIGGER AS $$
BEGIN
RAISE NOTICE ‘update pesanan id: % .. ‘,NEW.idpesan;
UPDATE pesanan SET ttlbyar=coalesce(ttlbyar,0) +NEW.jmlh WHERE id=NEW.idpesan;

/* pada update di atas menjelaskan bahwa table pbyaran yg telah di

daftar oleh trigger maka field2 yang diambil adalah dari pbyaran

terdapat fungsi coalesce(ttlbyar,0)

yang berfungsi untuk memaksa field total bayar dari yang tadinya null menjadi 0

karena kalau tidak seperti itu maka perhitungan akan error

#select null +/*/ 1;  hasilnya adalah null begitu juga sebaliknya

hal ini penting mengingat pada awalnya pasti field ttlbyar berniai kosong/ null namun

karena akan melakukan perhitungan maka null di ubah dengan fungsi coalesce() menjadi 0

*/

RETURN NEW;
END;
$$ LANGUAGE ‘plpgsql’;

— 2) drop trigger kalau sudah ada
DROP TRIGGER IF exists trig_pembayaran_add ON pbyaran;

— 3) mendaftarkan trigger ke tabel –> hal ini penting karena tanpa ini tak akan jalan step 1) di atas
CREATE TRIGGER trig_pembayaran_add AFTER INSERT ON pbyaran
FOR EACH ROW EXECUTE PROCEDURE trig_pembayaran_add();

dia memudahkan kita dalam mengupdate table yang saling berhubungan

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s