PostgreSQL UPDATE TRIGGER Nedir Nasıl Kullanılır?

PostgreSQL UPDATE TRIGGER Nedir Nasıl Kullanılır? , Trigger Nedir ? Nasıl Kullanılır? Yazımda Trigger  ile ilgili detaylı bilgileri ve genel kullanımından bahsetmiştim. Bu yazımda Update Triggerdan bahsedeceğim.

İlk olarak trigger oluşturmadan önce function yada procedure oluşturmamız gerekmektedir. Bunu yapmamızda ki amaç create trigger komutu içerisinde yapılacak işlemi o fonksiyonu kullanarak gerçekleştiriyor olacağımızdandır.

 

Update trigger  ile ilgili örnek yaparak daha iyi oturacağını düşünüyorum.

Veliler tablosun update işlemi yapıldığında bunu hangi veliler tablosunda ki id ,adi, soyadi kolonlarını ve bu update işlemini hangi kullanıcın yaptığını ve ne zaman yaptığını  ve hangi işlemin yapıldığını veliler audit tablosuna yazan trigger yapacağız.

İlk olarak update yapılanların logunu tutacak olan Veliler_audit isminde tablomuzu oluşturuyoruz.

 

CREATE TABLE "Veliler_Audit"
(
"Velilerid" INT NOT NULL,
"İsim" VARCHAR(20) NOT NULL,
"Soyisim" VARCHAR(20) NOT NULL,
"UserName" VARCHAR(20) NOT NULL,
"Tarih" VARCHAR(20) NOT NULL,
"İşlem"  VARCHAR(20) NOT NULL
);

Tablomuzu oluşturduktan sonra verilerimizi veliler_audit tablosuna eklenmesi için aşağıdaki gibi fonksiyon oluşturmamız gerekiyor. Burada returns kısmında

Returns trigger komutunu kullandığımız görebilirsiniz. Bunun sebebi bu fonksiyonun trigger da kullanılacağından dolayıdır.

CREATE OR REPLACE FUNCTION veliler_update_trigger_fnc()
  RETURNS trigger AS
$$
BEGIN
    INSERT INTO "Veliler_Audit" ( "Velilerid", "İsim", "Soyisim","UserName" ,"Tarih","İşlem")
         VALUES(NEW."no",NEW."adi",NEW."soyadi",current_user,now(),'update');
RETURN NEW;
END;
$$
LANGUAGE 'plpgsql';

Fonksiyonumuzu oluşturduktan sonra aşağıdaki gibi oluşturduğumuz fonksiyonu en altta belirttiğimiz triger’ı oluşturuyoruz.

CREATE TRIGGER verify_user_for_update
 BEFORE UPDATE
 ON "veliler"
 FOR EACH ROW
EXECUTE PROCEDURE veliler_update_trigger_fnc();

Veliler tablosundaki 15 numaralı  kaydı Fatma olarak değiştirelim.

update  veliler  set adi ='Fatma' where no =15

Yukarıda gördülüğü gibi kaydımızın buraya düştüğünü görüyoruz.

Loading