PostgreSQL DDL Trigger \Event Trigger
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 eventlog();
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.