Trigger

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ı
kuntay
Üye
Mesajlar: 86
Kayıt: 08 Tem 2003 09:41
Konum: İçel
İletişim:

Trigger

Mesaj gönderen kuntay »

Soruyu firebird yerine sormuştum veritabanım firebird diye ama galiba yanlış yermiş orası

sorum :
Trigger SP bir deneme yapim dedim örnekleri inceledim
seminere baktım

Dedim kendi kendime bir test yapim
Tablolar
CREATE TABLE CARI (
BILKOD INTEGER NOT NULL, (PK)
CARI_UNVAN VARCHAR(35),
BORC NUMERIC(15,0),
ALACAK DOUBLE PRECISION,
BAKIYE DOUBLE PRECISION
);

CREATE TABLE CARIHAREKET (
CH_BILKOD INTEGER NOT NULL, (PK)
CR_BILKOD INTEGER, (FK)
ACIKLAMA VARCHAR(50),
ALACAK NUMERIC(15,2),
BORC NUMERIC(15,2)
);

cari hareket tablosunda bir borç hareketi olursa cari tablosunun borç hanesine işlesin alacak olursa cari tablosunun cari hanesinde alacak kısmına

ama kayıtlar giriyom yok bişe trigger kodunu verim bir de siz fikir üretin

Kod:

Kod: Tümünü seç

AS
begin
     if (new.alacak=0) then begin
  update cari set
  cari.borc=cari.borc+new.borc

  where
     new.CR_BILKOD=cari.bilkod;

           update cari set
    cari.bakiye=cari.borc-cari.alacak

  where
     new.cr_bilkod=cari.bilkod;
       end
   else
  if (new.borc=0) then begin
      update cari set
    cari.alacak=cari.alacak+new.alacak
    where
    new.cr_bilkod=cari.bilkod;

           update cari set
       cari.bakiye=cari.borc-cari.alacak
    where
    new.cr_bilkod=cari.bilkod;


  end
  /* Trigger text */
end
after insertte denedim befor insertte denedim yok olmuyor

Bir de anlayamadığım şey bu hesaba benzer işler trigger ilemi yapılır yoksa SP ilemi yapılır.
Trigger ve SP aynı işlerimi yapabiliyor.
SP konusunu şöyle düşünüyorum :
SP değer alabilir değişkenleri olabilir tanımlanabilir ve dışardan her türlü yerden çalıştırılır. peki trigger ne yapamaz Sp den farklı
veya sp triggerin yaptığı neyi yapamaz yada trigger sp nin yaptığı neyi yapamaz.

Ya nerden vardın bu konuya diyeceksini şimdi bir örneğe bakıyorum buna benzer bir hesap işinde Sp kullanılmış trigger ile tetiklenmiş
bir bakıyorum sadece trigger de yapılmış

SAyın moderatörlerim adminlerim
sizler triggerde neleri SP de neleri yaparsınız .
En son mussimsek tarafından 08 Haz 2008 04:14 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Sebep: Konu uygun foruma taşındı, konuyla alakasız başlık düzeltildi.
Ol deyince olduran Gönüllerimizi imanla dolduran
Yüce Allahın doksandokuz ismi ile.. Selamın Aleyküm
Kullanıcı avatarı
kuntay
Üye
Mesajlar: 86
Kayıt: 08 Tem 2003 09:41
Konum: İçel
İletişim:

Re: Çalışmayan kod herkes çalıştırıyor ben hariç

Mesaj gönderen kuntay »

Fahrettin abi şimdi senin örneğe baktım yani benim herşey normal
ama neden trigger işlem yapmıyor birisi yardım etsin
yoksa buz gibi soğuyacam bu trigger işinden
Ol deyince olduran Gönüllerimizi imanla dolduran
Yüce Allahın doksandokuz ismi ile.. Selamın Aleyküm
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Re: Trigger

Mesaj gönderen mussimsek »

Merhaba,

Bence Fahrettin abinin makalesini bir daha inceleyin. Yanlış hatırlamıyorsam seminerlerden birinde de görüntülü ve sesli olarak anlatmıştı, onu izlemenizde faydalı olur.

Trigger belli olaylardan sonra otomatik tetiklenir. Kayıt ekleme, silme ve güncelleme öncesi ve sonrası. Bu açıdan hesaplama, loglama gibi işlemler için idealdir.

Kolay gelsin.
Kullanıcı avatarı
kuntay
Üye
Mesajlar: 86
Kayıt: 08 Tem 2003 09:41
Konum: İçel
İletişim:

Re: Trigger

Mesaj gönderen kuntay »

Sayın adminim saolun deneme yapıyorum ama sonuç hüsran şimdi virdoyu izledim 8. seminer yani herşey tamam
cari hareket tablosuna bir daha insert ettiğim anda insert triggerinin işlemesi gerekirken işlemiyor

Alan değeri boş ilk başta bununla alakası olabilirmi diye düşünüyorum
Ol deyince olduran Gönüllerimizi imanla dolduran
Yüce Allahın doksandokuz ismi ile.. Selamın Aleyküm
Kullanıcı avatarı
kuntay
Üye
Mesajlar: 86
Kayıt: 08 Tem 2003 09:41
Konum: İçel
İletişim:

Re: Trigger

Mesaj gönderen kuntay »

Sorunu buldum alan değerlerinin boş olmaması gerekiyor
yani ilk default değer olarak 0 gelmesi lazım
veri tabanı kısmında bunu nasıl yaparım ilk yeni kayıt esnasında değerlerin 0 gelmesini
Ol deyince olduran Gönüllerimizi imanla dolduran
Yüce Allahın doksandokuz ismi ile.. Selamın Aleyküm
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Re: Trigger

Mesaj gönderen mussimsek »

Merhaba,

Eğer default olarak 0 değerini vermek istiyorsan, bunun pek çok yöntemi var.

1. IBDataset'in OnNewRecord olayında atama yapabilirsin :

Dataset.fieldByName('alan').AsFloat := 0;

2. Veya BeforeInsert triggerında atama yapabilirsin

if new.alan is null then
new.alan=0;

Kolay gelsin.
Cevapla