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.

 177 total views,  2 views today

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Theme: Overlay by Kaira Extra Text
Cape Town, South Africa