PostgreSQL - Konumsal Bilgi Kolonu (Poly) Update Etmek için Trigger Kullanımı
Amaç :
CREATE OR REPLACE FUNCTION process_example_procedure() //FONKSIYON ADI
RETURNS trigger AS
$BODY$
BEGIN
IF (TG_OP = 'INSERT') THEN //VERI INSERT EDILDIĞINDE ÇALIŞTIR
UPDATE t_istekler SET
poly = (select poly from yeni_numarataj where mahalle_ad=new.mahalle and sokak_adi=new.sokak and text_=new.kapi_no)
WHERE fid = NEW.fid ; //YAPILACAK OLAN ISLEM
END IF;
RETURN NEW;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION process_example_procedure() OWNER TO postgres;
Bu işlemden sonra bu fonksiyonu hangi tablomuz için çalıştıracağımızı belirten komutlarımızı çalıştırıyoruz.
Tabloya bir kayıt eklendiğinde kullanıcı kaydın konum bilgisini bilmiyorsa, veri sisteme kaydolduğunda otomatik olarak başka tablodaki konum bilgisi ile verinin güncellenmesi
Herhangi bir veri girişi yapıldığında tek komutla ve manuel olarak ayarlanarak yapmak istediğim aslında bu kodlada yapılabilir. Fakat biz işlemimizi bir otomasyona dökmek istiyorsak SQL in trigger fonksiyonlarını kullanmalıyız.
update t_istekler set poly=(select poly from yeni_numarataj where mahalle_ad='TURKOBA' and sokak_adi='BADEM SOKAK' and text_='1') where mahalle='TURKOBA' and sokak='BADEM SOKAK' and kapi_no='1'
Bu komut şartlara uygun veri var ise iç içe select yaparak tablodaki veriyi günceller.
Bu komut şartlara uygun veri var ise iç içe select yaparak tablodaki veriyi günceller.
Şimdi biz bu işlemi trigger ile nasıl yaparız ona bakalım.
Öncelikle trigger fonksiyonumuzu yazıyoruz.
CREATE OR REPLACE FUNCTION process_example_procedure() //FONKSIYON ADI
RETURNS trigger AS
$BODY$
BEGIN
IF (TG_OP = 'INSERT') THEN //VERI INSERT EDILDIĞINDE ÇALIŞTIR
UPDATE t_istekler SET
poly = (select poly from yeni_numarataj where mahalle_ad=new.mahalle and sokak_adi=new.sokak and text_=new.kapi_no)
WHERE fid = NEW.fid ; //YAPILACAK OLAN ISLEM
END IF;
RETURN NEW;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION process_example_procedure() OWNER TO postgres;
Bu işlemden sonra bu fonksiyonu hangi tablomuz için çalıştıracağımızı belirten komutlarımızı çalıştırıyoruz.
Daha sonra ise bir veri girişi yapalım.
3 kolona bilgi girişi yaparak veri ekledik. (mahalle - sokak - kapi_no)
Farkettiyseniz konum bilgimizi girmedik.
Şimdi ise girdiğimiz bilgiyi sorgulayalım.
Sorgu sonucundada görüldüğü gibi verimizin poly bilgisi gelmiştir.
Bu trigger elimdeki sağlıklı veriler sonucu düzgün çalışmaktadır.
Bende olan mahalle adı, sokak adı, ve kapı numaraları nın konumsal bilgileri(poly) olduğu için ve veri girişi yapılacak alanlarında elimdeki verilere göre dizayn edilmiş olmasından ötürü triggerım sağlıklı çalışıyor.
Yorumlar
Yorum Gönder