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.

Loading