Forum

Sql Server update t...
 
Bildirimler
Hepsini Temizle

Sql Server update trigger 2 kez çalışması

2 Yazılar
1 Üyeler
0 Reactions
1,013 Görüntüleme
(@BakiErbas)
Gönderiler: 2
New Member
Konu başlatıcı
 

Merhaba sql server trigger ile sms gönderiyorum, satır update olduğunda değişikliğide sms ile bildiriyorum fakat update durumunda trigger 2 defa çalışıyor bu durumda aynı sms 2 defa gidiyor bunu nasıl engelleyebilirim?

SET NOCOUNT ON; 

IF EXISTS (SELECT 1 FROM inserted) AND EXISTS (SELECT 1 FROM deleted) --satır değişitirlmişse 

   DECLARE @OLDTARIH DATETIME, @NEWTARIH DATETIME, @OLDDURUM VARCHAR(2), @NEWDURUM VARCHAR(2), @SMS BIT

   SELECT @NEWTARIH = CITARIHI, @NEWDURUM = DURUM FROM inserted 

   SELECT @OLDTARIH = CITARIHI, @OLDDURUM = DURUM FROM deleted 

    IF @NEWTARIH <> @OLDTARIH 

      BEGIN 

        SELECT 

        @musteri = MADI1, 

        @numara = ISNULL(ISNULL(MS.TEL1, MS.TEL2), MEMNUNN), 

        @mesaj = 'Sayın !musteri! işlem tarihiniz ' + CONVERT(VARCHAR(50), CITARIHI, 104) + ' olarak değiştirilmiştir. Bizi tercih ettiğiniz için teşekkür ederiz.'

        FROM inserted LEFT OUTER JOIN MISAFIR MS ON MS.MID = MID1 

        IF @numara IS NOT NULL 

          BEGIN 

            SELECT dbo.SmsGonder(@username, @parola, @org, @musteri, @numara, @mesaj, @mail) 

          END 

      END 

ELSE IF EXISTS (SELECT 1 FROM inserted) AND NOT EXISTS (SELECT 1 FROM deleted) --Yeni satır

     SELECT  

     @musteri = MADI1, 

     @numara = ISNULL(ISNULL(MS.TEL1, MS.TEL2), MEMNUNN), 

     @mesaj = 'Sayın !musteri! ' + CONVERT(VARCHAR(50), CITARIHI, 104) + ' tarihli kaydınız yapılmıştır. Bizi tercih ettiğiniz için teşekkür ederiz.' 

     FROM inserted LEFT OUTER JOIN MISAFIR MS ON MS.MID = MID1 

     IF @numara IS NOT NULL 

       BEGIN  

         SELECT dbo.SmsGonder(@username, @parola, @org, @musteri, @numara, @mesaj, @mail) 

       END 

END

 

 
Gönderildi : 06/02/2015 15:52

(@BakiErbas)
Gönderiler: 2
New Member
Konu başlatıcı
 

Öncelikle cevabınız için teşekkür ederim fakat bu bahsettiğiniz durumu denedim ama trigger update işleminde aynı anda hem insert hemde delete işlemi için çalıştığından daha o alan değişmeden ikinci smsi göndermiş oluyor. Hatta süre farkına bakmak istedim milisaniyesine kadar aynı. 

Örnek mesajlar şöyle;

Sayin BAKI EBAS işlem tarihiniz 05.02.2015 olarak degistirilmistir. Bizi tercih ettiginiz icin tesekkur ederiz. Feb 2015 13:20:18:653

Sayin BAKI EBAS işlem tarihiniz 05.02.2015 olarak degistirilmistir. Bizi tercih ettiginiz icin tesekkur ederiz. Feb 2015 13:20:18:653

 
Gönderildi : 06/02/2015 16:27

Paylaş: