Trigger içinden trigger oluşturma

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ı
pentiumkivanc
Üye
Mesajlar: 350
Kayıt: 19 Şub 2004 10:24
İletişim:

Trigger içinden trigger oluşturma

Mesaj gönderen pentiumkivanc »

Selamlar;
FB için bir veritabanı tasarım programı yazıyorum benim triggerimin bir triggerin olup olmadığını kontrol etmesini eğer yoksa o zaman trigger oluşturmasını istiyorum.

triggerim şöyle
(üst kısmı iboconsole oluşturuyor.)

Kod: Tümünü seç

AS  
  DECLARE VARIABLE TRIGGER_COUNT INTEGER;
  declare variable baglanti_tablo varchar(250);
  declare variable baglanti_alan varchar(250);
  declare variable firma_tablo varchar(250);
  declare variable firma_alan varchar(250);
begin
  select count(*) from rdb$triggers where (rdb$trigger_name='LNK'||new.alanadi) INTO TRIGGER_COUNT;

  if (trigger_count=0) then
  begin
  baglanti_tablo=new.link_tablo;
  baglanti_alan=new.link_alan;
  firma_tablo=new.tabloadi;
  firma_alan=new.alanadi;

  CREATE TRIGGER 'LNK'||new.alanadi FOR FIRMA
    ACTIVE BEFORE INSERT OR UPDATE POSITION 0
    AS
    declare variable varmi integer;
    begin
     select count(*) from baglanti_tablo where (baglanti_tablo.baglanti_alan=new||'.'||firma_alan) into varmi;
     if (varmi=0) then
     begin
     insert into baglanti_tablo (baglanti_alan) values (new||'.'||firma_alan);
     end
    end
   end
end
burada amaç alanadi isimli alana girilen alan adı ile ilgili trigger yoksa o zaman onunla ilgili trigger oluşturmak. Ama create trigger kısmına gelince kod hata veriyor. İçinden çıkamadım bi yardımcı olursanız sevinirim

Kolay gelsin
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

execute statement 'CREATE TABLE NEW_TABLE (
NEW_FIELD INTEGER);';

bunu bir procedure icine yazdım tabloyu olusturdu.
buna gore duzenlersen,execute statement ile olur
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
pentiumkivanc
Üye
Mesajlar: 350
Kayıt: 19 Şub 2004 10:24
İletişim:

Mesaj gönderen pentiumkivanc »

peki bu execute statement içinde örneğin new.alanadi yazdığımda buradaki new o cümle içinde mi geçerli olur yoksa onu tetikleyen trigger da mı yani global mi olur yoksa local mi
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

O verinin en yeni halidir. Old dersen eski halini(Değişimden önceki) yakalarsın.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Cevapla