Database içinde trigger procedure ve tablodaki bir alan varm

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ı
GOLAKS
Üye
Mesajlar: 22
Kayıt: 06 Nis 2006 09:47
Konum: İSTANBUL
İletişim:

Database içinde trigger procedure ve tablodaki bir alan varm

Mesaj gönderen GOLAKS »

merhaba arkadaşlar firebird veri tabanı ile bir proje geliştiriyorum. Ancak kod ile delphi içerisinden veritabanı güncellemeleri yapmam gerekiyor, diyelim ki ben programın veritabanına bir trigger ekledim ve exeyi güncelleme olarak webe yükledim yeni versiyonu indiren kullanıcının bunu güncelleyebilmesi için de bir sql hazırladım sql i çalıştırdığımda veri tabanına istediğim alan trigger ve procedure ekleyebiliyorum ancak sorun şudur ki

Delphi İçerisinden veri tabanında o trigger ve procedur un olup olmadığını nasıl kontrol ettirebilirim.
Golaks Yazılım
Bilgileriniz Kayda Değerse..!
www.golaks.com.tr
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Sistem tabolarında istediğin kontrolu yapman mümkün. Mesela RDB$PROCEDURES tablosunda RDB$PROCEDURES_NAME alanında senin procedure ismin var mı diye sorgu/select çekebilirsin;

Kod: Tümünü seç

select count(*) from RDB$PROCEDURES
where RDB$PROCEDURES_NAME = 'SP_BENIM_PROCEDURUM'
Aynı şekilde RDB$TRIGGERS tablosunda aradığın trigger in olup olmadığını ve RDB$RELATION_FIELDS tablosunda da istediğin tablonun aradığın alanının olup olmadığını benzer şekilde sorgulayabilirsin :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
GOLAKS
Üye
Mesajlar: 22
Kayıt: 06 Nis 2006 09:47
Konum: İSTANBUL
İletişim:

Veri Tabanına Kod İle Trigger Ekleme

Mesaj gönderen GOLAKS »

teşekkürler rasim hocam konuyu siz cevabı yazmadan çözmüştüm diğer arkadaşlara tam örnek olması açısından kodu paylaşıyorum

Kod: Tümünü seç

qAra.Close;
  qAra.SQL.Clear;
  sql:='SELECT * FROM RDB$TRIGGERS WHERE RDB$TRIGGER_NAME ='+QuotedStr('YeniServis');
  qAra.sql.add(sql);
  qAra.open;
  if qAra.IsEmpty then
  begin
  qEkle.SQL.Clear;
  sql1:='CREATE TRIGGER "YeniServis" FOR SERVIS ACTIVE AFTER INSERT POSITION 0 AS BEGIN post_event'+QuotedStr('Yeni Servis')+';End';
  qEkle.SQL.Add(sql1);
  qEkle.exEcSQL;
  TSERVIS.CommitRetaining;
  end;
Golaks Yazılım
Bilgileriniz Kayda Değerse..!
www.golaks.com.tr
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Çözdüğüne sevindim. Buarada adım Rasim değil Recep :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla