PostgreSQL - Konumsal Bilgi Kolonu (Poly) Update Etmek için Trigger Kullanımı

Amaç : 
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.

Ş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

Bu blogdaki popüler yayınlar

Asp.Net - Mvc Projesi Örneği - CodeFirst Tekniği

PostgreSQL de Veritabanı Oluşturma

PostgreSQL 8.3 Zamanlanmış Görev Ekleyerek Veritabanı Yedek Alma