

Basit Bir Soru: Stored Procedure Komutu Trigger'ı Tetiklemeyi Engelliyor Mu?
-
Başlık boktan oldu farkındayım.
Şuan hayal kırıklığı yaşıyorum.
Projemde bazı işlemleri Stored Procedure ile yapıyordum.
Sonra bir tabloya update, delete ve insert triggerları yazdım.
Program üzerinden yani Stored Procedure ile örnek veriyorum delete işlemi yaptığımda
trigger'ın tetiklenmediğine şahit oldum.
ama sql den yeni sorgu deyip delete işlemi yaptığımda trigger tetikleniyor ve görevini yerine getiriyor.
Bu saçmalığı nasıl çözebilirim ?
-
güncell
-
-
-
ya sacma olabilir ama sadece bir fikir
procedure u tetikledikten sonra connectionu kapatıyormusun ?
acık kalıyorsa diger crud işlemini procedure ile yapamıyo olabilirmisn ?
-
ILKER06 bunu yazdı
ya sacma olabilir ama sadece bir fikir
procedure u tetikledikten sonra connectionu kapatıyormusun ?
acık kalıyorsa diger crud işlemini procedure ile yapamıyo olabilirmisn ?
denemediğim şey kalmadı. bunuda denedim.
db.Sp_Delete_ServisIslemler(DeleteServisID);
db.Dispose();dispose yaptım. yine aynı.
-
sahit oldum demek cok havada kalmis bir sey hocam.. Yazdigin condition ile ilgili olabilir..
Var olan tüm triggerlarini kapat ve delete islemi icin bir trigger olustur ve audit tablosu olusturarak loglama yap.
örnek olarak:
https://www.codeproject.com/Articles/21068/Audit-Trail-Generator-for-Microsoft-SQL
buradan göreceksin tetiklenip tetiklenmedigini..
ikinci olarak SQL Server Profiler kullanip inceleyebilirisn kayitlari..
Sorunu bulmak icin adim adim ilerlemek gerek. Muhtemelen bir yerde hata yaptin... Eger kayit siliniyorsa trigger'in calismasi lazim. bunu da kesin anlamak icin loglama yapmalisin
-
Asayisci bunu yazdı
Oracle da böyle bir sorun olmadı da hocam ondan sordum. SP ve triggerin içeriğini yazabilir misin?
-
unbalanced bunu yazdı
sahit oldum demek cok havada kalmis bir sey hocam.. Yazdigin condition ile ilgili olabilir..
Var olan tüm triggerlarini kapat ve delete islemi icin bir trigger olustur ve audit tablosu olusturarak loglama yap.
örnek olarak:
https://www.codeproject.com/Articles/21068/Audit-Trail-Generator-for-Microsoft-SQL
buradan göreceksin tetiklenip tetiklenmedigini..
ikinci olarak SQL Server Profiler kullanip inceleyebilirisn kayitlari..
Sorunu bulmak icin adim adim ilerlemek gerek. Muhtemelen bir yerde hata yaptin... Eger kayit siliniyorsa trigger'in calismasi lazim. bunu da kesin anlamak icin loglama yapmalisin
c# üzerinden tabloya insert işlemi yaptığımda stok kısmında düşüş başarılı bir şekilde oluyor. Bunda sorun yok.
ancak yine C# üzerinden delete işlemi yaptığımda Delete trigger'i tetiklenmiyor.
(Bu arada delete işleminide stored procedure ile yapıyorum C# üzerinden)
ama sql den yeni sorgu deyip delete işlemi yaptığımda trigger tetikleniyor ve görevini yerine getiriyor.
yani delete işlemini management studio üzerinden yaptığımda trigger tetikleniyor.
ama program üzerinden yaptığımda tetiklenmiyor.
trigger ı hatalı yazmış olsam sql üzerinden delete işlemi yaparkende çalışmamaması lazım değil mi?
-
hatta aşama aşama kontrol ediyorum. Management studio üzerinden yaptığım delete işleminde herhangi bir sorun yok.
trigger şu şekilde.
ALTER trigger [dbo].[trg_StokTakip3]
on [dbo].[ServisIslemlerSub]
after delete
as
declare @UrunId int
declare @ServisID bigint
declare @ServisTipID int
declare @MontajYapilmaDurum bit
select @UrunId=ServisUrunID, @ServisID=ServisID, @MontajYapilmaDurum=MontajYapilmaDurum from deleted
select @ServisTipID=ServisTipID from ServisIslemler where ServisID=@ServisID
select '1 Aşama'
select @ServisID
select @ServisTipID
select @MontajYapilmaDurum
IF @ServisTipID=1 and @MontajYapilmaDurum=1
BEGIN
select '2 Aşama'
update ServisProduc set UrunMevcudu+=1 where ServisProducID=@UrunId
END
ELSE if @ServisTipID=2 and @MontajYapilmaDurum=1
BEGIN
select '3 Aşama'
update MontajUrun set UrunMevcudu+=1 where MontajUrunID=@UrunId
end -