PostgreSQL DELETE TRIGGER Nedir Nasıl Kullanılır?
PostgreSQL DELETE 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 Delete 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.
Delete trigger ile ilgili örnek yaparak daha iyi oturacağını düşünüyorum.
Veliler tablosun delete işlemi yapıldığında bunu hangi veliler tablosunda ki id ,adi, soyadi kolonlarını ve bu delete 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 delete 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_delete_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(),'delete');
RETURN NEW;
END;
$$
LANGUAGE 'plpgsql';
Fonksiyonumuzu oluşturduktan sonra aşağıdaki gibi oluşturduğumuz fonksiyonu en altta belirttiğimiz triger’ı oluştuyoruz.
CREATE TRIGGER velilerdeletetrigger
BEFORE delete
ON "veliler"
FOR EACH ROW
EXECUTE PROCEDURE veliler_delete_trigger_fnc();
Veliler tablosundaki 14 numaralı kaydı silelim.
delete from veliler where "no" = 14
Kaydımız silinmiş mi kontrol edelim.