Firebird veritabanında logging Nasıl yapılır

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
softdestek
Üye
Mesajlar: 155
Kayıt: 17 Eyl 2010 03:53

Firebird veritabanında logging Nasıl yapılır

Mesaj gönderen softdestek »

Programlarda veri güvenliği için logging yani kayıtların kütüğünü tutmak şart olmaya başladı..
Loggingde olması gerekenler
1)Giriş bilgisi table,field
2)Silme bilgisi table,silinen kayıt bilgileri..
3)Düzeltme bilgisi table,düzeltilen kayıt bilgisi eski ve yeni hali bilgileri..

bu konuda çalışma yapan ve bilgilerini paylaşan arkadaşlara teşekkürler..
Daha kaliteli programlar yazmamız ve insanlara kazandırmamız dileğiyle..

Logging olayını trigerler ile yapan bir çalışma paylaşılırsa çok iyi olur arkadaşlar..
Kullanıcı avatarı
softdestek
Üye
Mesajlar: 155
Kayıt: 17 Eyl 2010 03:53

Re: Firebird veritabanında logging Nasıl yapılır

Mesaj gönderen softdestek »

Cevabı yine ben vereyim
select
ibe$log_tables1.id,
ibe$log_tables1.table_name,
ibe$log_tables1.operation,
ibe$log_tables1.date_time,
ibe$log_tables1.user_name,
ibe$log_fields.field_name,
ibe$log_fields.old_value,
ibe$log_fields.new_value
from ibe$log_fields
inner join ibe$log_tables ibe$log_tables1 on (ibe$log_fields.log_tables_id = ibe$log_tables1.id)

Cevap bu kadar basit ama veren çıkmadı maalesef merak edenler mesaj atsın..Kimsenin merak ettiği yok sanırım
Resim
Resim
dkiraz
Üye
Mesajlar: 7
Kayıt: 08 Ara 2004 01:54
İletişim:

Re: Firebird veritabanında logging Nasıl yapılır

Mesaj gönderen dkiraz »

Merhaba,

Merak edilmediğini düşünme :) En az yüzlerce insan arama yaptırıp bu konuyu okumuştur. Bende fikir almak için en pratik trigger kodu yazarak bu işi yapmanın yolunu bulmaya çalışanlardan biriyim. Anladığım kadarıyla field degeri bazında bu işi çözmüşsün. Tek tek fieldların değerlerini if (new.fieldvalu <> old.fieldvalue) karşılaştırmasına sokmak gerekiyor. Bu şekilde iş biraz uzun olabilir ama sonuçta bir çözümdür.

Benim düşündüğüm bir "database trigger" ın OnCommitTransaction trigger olayını yakalayıp oradaki commit edilen statement yakalamaya dayanmaktaydı. Dolayısıyla veritabanı loglamak için sadece bir triggerı yakalamak yetmekte. Ancak teknik olarak işi çözemedim , henüz :) Eğer çözümü bilen arkadaşlarımız varsa lütfen bu mesajı cevaplasın, hasretle beklemekteyiz ;)
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: Firebird veritabanında logging Nasıl yapılır

Mesaj gönderen esistem »

softdestek yazdı:Cevabı yine ben vereyim
select
ibe$log_tables1.id,
ibe$log_tables1.table_name,
ibe$log_tables1.operation,
ibe$log_tables1.date_time,
ibe$log_tables1.user_name,
ibe$log_fields.field_name,
ibe$log_fields.old_value,
ibe$log_fields.new_value
from ibe$log_fields
inner join ibe$log_tables ibe$log_tables1 on (ibe$log_fields.log_tables_id = ibe$log_tables1.id)

Cevap bu kadar basit ama veren çıkmadı maalesef merak edenler mesaj atsın..Kimsenin merak ettiği yok sanırım
merhaba, bu yukardaki kod logging mi yapıyor şimdi? ben bunu nereye yazıcam ?
Kullanıcı avatarı
softdestek
Üye
Mesajlar: 155
Kayıt: 17 Eyl 2010 03:53

Re: Firebird veritabanında logging Nasıl yapılır

Mesaj gönderen softdestek »

İlgilen arkadaşlar aşağıdaki uygulmayı indir.Db ve exe dosya ve source da ekdedir.
http://www58.zippyshare.com/v/16699449/file.html
Cevapla