Insert Into

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
andronoid
Üye
Mesajlar: 35
Kayıt: 26 Tem 2004 06:44

Insert Into

Mesaj gönderen andronoid »

Merhaba.. Herkese kolay gelsin..

IBExpert ile FireBird kullanarak 2 adet table yaptım. (Cari ve carihar) carihar tablosunun After Insert Trigger`inde aşağıdaki procedure`yi çalıştırıyorum. IBExpert`te carihar tablosundan kayıt girişi yaptığımda Cari tablosuna ilgili değişiklikler yansıyor. (Borc-Alacak-Bakiye) Fakat işin ilginç tarafı Sql editörden Insert into ile kayıt girişi yaptığımda Carihar tablosuna kayıt girmesine rağmen Cari tablosu bundan etkilenmiyor. Yani Borc-Alacak-Bakiye hesaplanmıyor. Bu konuda bir fikri olan varsa, paylaşırlarsa sevinirim. Herkese iyi çalışmalar diliyorum...

Kod: Tümünü seç

create procedure sp_caribakiye (
    kod integer)
as
declare variable l_borc bigint;
declare variable l_alacak bigint;
declare variable l_bakiye bigint;
begin
   select sum(tutar) from carihar where kod=:kod and durum='giriş' into l_borc;
   select sum(tutar) from carihar where kod=:kod and durum='çıkış' into l_alacak;
   l_bakiye=:l_borc-:l_alacak;
   update cari set borc=:l_borc, alacak=:l_alacak, bakiye=:l_bakiye where kod=:kod;
end
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

SQL editörde script i execute ettikten sonra commit ediyormusun? üst tarafta kırmızı ok işareti gibi olan şey

Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
andronoid
Üye
Mesajlar: 35
Kayıt: 26 Tem 2004 06:44

Mesaj gönderen andronoid »

Evet Commit`te ediyorum. Ancak hata bende. Triggerler ile ilgili ufak bir karışıklık olmuş. Yazdığım procedure`yi Carihar`ın değil Cari`nin After Insert Trigger`inden çağırıyormuşum. DDL kısmına bakınca hatamı gördüm. Carihar`da Delete ve Update Trigger`leri normal olarak çalıştığı için kendim kayıt girdiğimde Cari bundan etkileniyormuş.. Kusura bakmayın. Özür diliyorum. :? Kafam bayağı karışmış..

İyi çalışmalar diliyorum herkese...
andronoid
Üye
Mesajlar: 35
Kayıt: 26 Tem 2004 06:44

Mesaj gönderen andronoid »

Tekrar merhaba. Arkadaşlar cari`nin bakiyesini, borc ve alacak tutarını belirttiğim kod ile yapıyorum. Yani Sum fonksiyonunu kullanarak. Bu şekilde yapmam mı veya carihar`a bir işlem eklendiğinde toplama ve çıkarma işlemi yaparak mı bunları hesaplamam performans açısından daha iyi olur? Yani o anda cari`nin borcunu veya alacağını arttırıp-azaltarak mı yapmam daha hızlı çalışır?

Herkese iyi çalışmalar...
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

haliyle borc ve alacak icin bir alan kullanıp her harekette guncellemek daha hızlı olur.
bu guncellemenin guvenligini saglayabilirsen hic sakıncası olmadan calısması lazım
procedur de kullanabilirsin, ama hızdan odun vereceksin o zaman
hareket sayısı az ise bu hız dusuklugu hic farkedilmez sanırım
ÜŞENME,ERTELEME,VAZGEÇME
Cevapla