PostgreSQL DDL Trigger \Event Trigger,Data Definition Language (DDL) tabloları veritabanı yapısı veya şema tanımlamak için kullanılır.Bunlardan bazıları aşağıdaki gibidir.
CREATE ,ALTER ,DROP,TRUNCATE gibi işlemlerdir .
Bazen yapılan ddl işlemlerini kayıt altına tutmak isteriz. Bundan dolayı trigger gibi işlemleri kullanmak zorunda kalırız.
İlk olarak ddl işlemlerinin tutulacağı tabloyu oluşturuyoruz.
create table ddl_log (islem char(100),yapılantarih char(100),kullanıcı char(100 ))
Tablomuzu oluşturduktan sonra fonksiyonumuzu oluşturalım.
CREATE OR REPLACE FUNCTION eventlog()
RETURNS event_trigger
LANGUAGE plpgsql
AS $$
BEGIN
insert into ddl_log values (tg_tag,now(),current_user );
END;
$$;
Event triggerimizi oluşturalım .
CREATE EVENT TRIGGER ddllog ON ddl_command_end
EXECUTE FUNCTION eventlogfnc();
Deneme adında fonksiyon oluşturalım
create function deneme()
returns char(100)
language plpgsql
as
$$
begin
raise info 'deneme ';
end;
$$;
Oluşturduğumuz ddl_log tablomuza bakalım kaydımız eklenmiş mi?
Deneme amaçlı tablo oluşturalım
create table deneme1(a int)
Ddl_log tablomuza baktığımızda create table komutunun ne zaman ve hangi kullanıcıyla çalıştırıldığını tabloya yazdırıldığını görüyoruz.