trigger da for döngüsü

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ı
ThE-yLmZ
Üye
Mesajlar: 28
Kayıt: 14 Eki 2005 04:59
İletişim:

trigger da for döngüsü

Mesaj gönderen ThE-yLmZ »

Merhaba arkadaşlar,

3 table ım war;

kasa, bakiye ve kit

ben kasa insert edildiği zaman bakiye tablosuna kit in data sayısı kadar bilgi girişi yapıcam. Ancak bakiye tablosuna her girdiğim kitin id numarasınıda yazıcam. Nasıl bir döngü yapabilirim?


KASA TABLOSU;
CREATE TABLE KASA (
KA_ID INTEGER,
KA_HPID INTEGER,
KA_HPKOD VARCHAR(40) COLLATE PXW_TURK,
KA_KOD VARCHAR(10) COLLATE PXW_TURK,
KA_TANIM VARCHAR(20) COLLATE PXW_TURK,
KA_DV INTEGER,
KA_ACILIS FLOAT,
KA_BORC FLOAT,
KA_ALACAK FLOAT,
KA_KASATUR INTEGER,
KA_AYAR INTEGER,
KA_SBID INTEGER,
KA_ISLEV INTEGER,
KA_DKID INTEGER
);

BAKİYE TABLOSU;CREATE TABLE BAKIYE (
BAK_ID INTEGER,
KASA_ID INTEGER,
KIT_ID INTEGER,
BORC FLOAT,
ALACAK FLOAT
);

KIT TABLOSU;
CREATE TABLE KIT (
KIT_ID INTEGER,
KIT_TANIM VARCHAR(20)
);


şimdiden teşekkür ederim.
Kullanıcı avatarı
ThE-yLmZ
Üye
Mesajlar: 28
Kayıt: 14 Eki 2005 04:59
İletişim:

Mesaj gönderen ThE-yLmZ »

bana sadece kit in for döngüsü ile düşen değerlerini ufacık bir örnek verseniz gerisini yaparım,, for ile azıcık bir örnek..
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

1. Eksik soru, kullandığınız veritabanını yazmazsanız yardım almakta zorlanırsınız.
2. Fahrettin abinin makaleler forumunda triggerlarla ilgili güzel bir makalesi vardı, bunla birlikte forumda bir araştırma yapıp takıldığınız noktalarda soru sorarsanız daha faydalı olur. Bu şekilde direk hazır cevap alamayabilirsiniz ayrıca siz araştırıp birşeyler yapmaya çalışırsanız daha çabuk öğrenmiş olursunuz.
Kullanıcı avatarı
ThE-yLmZ
Üye
Mesajlar: 28
Kayıt: 14 Eki 2005 04:59
İletişim:

Mesaj gönderen ThE-yLmZ »

fahrettin beyin makalesini sonuna kadar okudum. Firebird 2.0 kullanıyorum. Kesinlikle hazır bişey istemedim. Sadece for döngüsünde bir datanın verisini almaktı istediğim.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Test tablo adı olsun. İçinde Adi, Soyadi, Dogum_Tarihi alanları olsun.

IBExpert ile trigger'da VARIABLE alanlar oluştur. AAdi, ASoyadi, ADogumTarihi gibi. Bunlari tablodaki alan tipleri ile aynı tip oluştur. CHAR ise CHAR, DATE ise DATE

Kod: Tümünü seç

for SELECT Adi, Soyadi, Dogum_Tarihi from TEST 
  WHERE Dogum_Tarihi < '18.10.1989' 
  INTO :AAdi, :ASoyadi, :ADogum_Tarihi DO
begin
   -- Burada 18.10.1989 dan önce doğanların kayıtları satır satır AAdi, ASoyadi.. içine gelecek.

  -- Bu bilgileri kullanarak insert işlemi gerçekleştirilebilir.
end
Kullanıcı avatarı
ThE-yLmZ
Üye
Mesajlar: 28
Kayıt: 14 Eki 2005 04:59
İletişim:

Mesaj gönderen ThE-yLmZ »

@codelord dedğin gibi

Kod: Tümünü seç

CREATE TRIGGER KASA_EKLEME FOR KASA
ACTIVE AFTER INSERT POSITION 0
AS
declare variable kit_id1 integer;
begin

FOR SELECT kit_id FROM kit INTO kit_id1
DO 
BEGIN 
  INSERT INTO bakiye (kasa_id,kit_id,borc,alacak) VALUES (new.ka_id,:kit_id1,0,0);
END
bu şekilde yazdım çalıştı ve çözüldü. Çok teşekkür ederim yardımın için.
Cevapla