PostgreSQL INSERT 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ı ile ilgili verdim . Bu yazımda INSERT TRIGGER Nedir Nasıl Kullanılır? bundan 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.
İnsert trigger ile ilgili örnek yaparak daha iyi oturacağını düşünüyorum.
Veliler tablosun insert işlemi yapıldığında bunu hangi veliler tablosunda ki id ,adi, soyadi kolonlarını ve bu inserti 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 insert 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_insert_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,current_date,'İnsertt');
RETURN NEW;
END;
$$
LANGUAGE 'plpgsql';
Fonksiyonumuzu oluşturduktan sonra aşağıdaki gibi oluşturduğumuz fonksiyonu en altta belirttiğimiz triggerı oluşturuyoruz.
CREATE TRIGGER veliler_insert_trigger
AFTER INSERT
ON "veliler"
FOR EACH ROW
EXECUTE PROCEDURE veliler_insert_trigger_fnc();
Veliler tablosuna veri ekleyelim.
INSERT INTO public.veliler(
no, adi, soyadi, evtelefon)
VALUES (15, 'f', 'a', 053212);
Verimizi ekledik ve veliler_Audit tablomuza veri eklenmiş mi kontrol edelim.