Berikut ini adalah tutorial bagaimana membuat sebuah trigger di database postgre. trigger ini berfungsi menciptakan sebuah aksi yang ter pantik akibat ada aktivitas update, insert atau delete dalam sebuah database.
pertama kita coba siapkan dulu sebuah tabel yang akan kita pasang sebuah trigger
CREATE TABLE TitikObject( id int4 serial primary key, koordinat geometry(Point,4326), longitude double precision NULL, latitude double precision NULL );
Setelah itu kita siapkan dulu sebuah Function yang akan melakukan sebuah kegiatan ekstrak data geometry menjadi data numeric yang kemudian dimasukkan kedalam field longitude dan latitude. berikut ini adalah function
CREATE OR REPLACE FUNCTION public.extractgeom() RETURNS trigger AS $BODY$ BEGIN IF pg_trigger_depth() <> 1 THEN RETURN NEW; END IF; update public.titikobject set longitude=ST_X(koordinat), latitude= ST_Y(koordinat) where id=NEW.id; RETURN NEW; END; $BODY$ LANGUAGE plpgsql VOLATILE SECURITY DEFINER
setelah function terbuat, selanjutnya kita siapkan sebuah trigger yang akan mengaktifkan function jika ada aktivitas insert atau update di tabel titikobject
CREATE TRIGGER tr_extractgeom AFTER INSERT OR UPDATE ON public.titikobject FOR EACH ROW EXECUTE PROCEDURE public.extractgeom();
selanjutnya kita coba tes dengan memasukkan sebuah record ke tabel titikobject. pada saat proses insert ini saya hanya memasukkan nilai koordinatnya saja.
insert into public.titikobject (koordinat) values(ST_SetSRID(ST_MakePoint(-71.1043443253471, 42.3150676015829),4326));
terlihat pada query diatas saya hanya memasukkan 1 buah value saja ke field koordinat, namun karena sudah ada trigger maka otomatis value utk longitude dan latitude field seharusnya langsung terisi. mari kita lihat hasilnya
select * from public.titikobject
dan ternyata data geometry untuk field koordinat sudah ter ekstrak.
demikian semoga bermanfaat.