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.