trigger ve SP

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
akipek
Üye
Mesajlar: 254
Kayıt: 24 Haz 2005 01:28

trigger ve SP

Mesaj gönderen akipek »

Mrb,


Şimdi 2 dosyam var bunlarda biri giris digeri stok
giris
adi char(10)
adet integer

stok ta aynısı

ben bir Stored procedure yazdım. SP_AAA diye. Burda yapılan stok dosyasına bakacak girilen bilgi stok dosyasında varsa güncelliycek yoksa ekliycek.

CREATE PROCEDURE SP_AAA AS

Declare @Kontrol as integer
Set @Kontrol = 0

if 0 = (Select count(*) from stok S(NoLock)
where Adi = @adi)
Begin
Insert Into stok values (@adi,0)
Select @Kontrol = 1
End
if @Kontrol = 0
Begin
Update stok Set Adet = Adet + @adet
where Adi = @adi
End

GO

bunu normalde vb de butona basıp ta çalıştırınca sorun yok.
exec sp_aaa @adi="omo", @adet=10

ama ben bunu giris table2'ına insert trigger olarak koyuyorum.

create trigger tr_stok on giris for insert as exec sp_aaa @adi="omo", @adet=10

dersemde sorun yok
ama derdim çok büyük
bu "omo" ve 10 değerlerini parametre olarak nasıl göndericem burda çakıldım
text1 ve text2 değerlerine girilenleri göndermem lazım
nasıl yapabilirim

Not: Aynı mesajı Programlama ve Delphi VCL'e de yazmışsınız :!: Tarafımdan silindi. rsimsek
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Mesaj gönderen Ali Erdoğan »

new.adi, new.adet olarak gönderebilirsin.
akipek
Üye
Mesajlar: 254
Kayıt: 24 Haz 2005 01:28

Mesaj gönderen akipek »

küçücük bi kod yazabilirmisini ben onu denedim ama yanlış yeremi koydum acaba?
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Trigger'ın mantığına ters bir şey istiyorsunuz. Trigger'da parametre geçişi olmaz.

Bunu yapamazsınız !... (Ben ilk defa sizden duydum böyle bir isteği)

Trigger Tetiklenir, VT tarafından kendiliğinden tetiklenir. Tetikleyici işlemde, Ya bir Tabloya, INSER, ya UPDATE yada DELETE olayıdır. O sebeple TRIGGER'a ne parametresi verebilirsiniz.????

Mantığınızı yeniden gözden geçirin ve yapmak istediğinizi başka türlü yapın, çünkü bahsettiğiniz olay bilemiyorum ama hiç bir VT Sunucusundan olmayan bir şey.

Ali Erdoğan : M$-SQL Server'da NEW veya OLD idye bir şey yok !... FB ile karıştırdın sanırım :)

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
akipek
Üye
Mesajlar: 254
Kayıt: 24 Haz 2005 01:28

Mesaj gönderen akipek »

new old yerine inserted değeri var işimi çözdüm bununla.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

INSERTED ve DELETED diye iki adet tablo niteliğinde DATASET'i vardır M$-SQL Server'ın. Ve Trigger tetiklemelerini 1 kayıt da işleseniz 100 kayıt da işleseniz sadece 1 kez yapar ve bu trigger tetiklenmeleri hep AFTER şeklinde çalışır.

Multirow işlemlerde dikkat edin hatalı trigger hesaplaması yapıp yanlış sonuçlar elde edebilirsiniz.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Cevapla