folder Tahribat.com Forumları
linefolder Database - Veritabanı
linefolder Basit Bir Soru: Stored Procedure Komutu Trigger'ı Tetiklemeyi Engelliyor Mu?



Basit Bir Soru: Stored Procedure Komutu Trigger'ı Tetiklemeyi Engelliyor Mu?

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsayisciAsayisci
    Asayisci
    Asayisci's avatar
    Kayıt Tarihi: 14/Eylül/2009
    Erkek

    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 ?

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsayisciAsayisci
    Asayisci
    Asayisci's avatar
    Kayıt Tarihi: 14/Eylül/2009
    Erkek

    güncell

     

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    EmQceR
    EmQceR's avatar
    Kayıt Tarihi: 14/Kasım/2007
    Erkek

    Hangi database i kullanıyorsun hocam

     

    EmQceR tarafından 23/Ara/19 14:29 tarihinde düzenlenmiştir

    Bu Yüce Türk Milleti ne ihanetler gördü hepsinin üstesinden gelmeyi başararak tarihe nice zaferler yazdırdı. Bu Millet Kuva-yı milliye hareketini yeniden başlatır. Sivas Kongresini yeniden toplar, Ya İstiklal, Ya Ölüm diye haykırır ve gereğini yapar. Türk Milleti ihaneti ve hainleri hiç affetmez. Dileğimiz odur ki bu iş sandıkta bitsin, aksi halde "sürüye dalmayı göze alan Kurt, çobanın da, köpeğinde hesabını yapmaz."
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsayisciAsayisci
    Asayisci
    Asayisci's avatar
    Kayıt Tarihi: 14/Eylül/2009
    Erkek
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ILKER06
    ILKER06's avatar
    Kayıt Tarihi: 15/Ağustos/2005
    Erkek

    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 ? 

     


    Hayattaki en güzel şeyler : Ya kanun dışı, ya ahlak dışı ya da şişmanlatıcıdır.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsayisciAsayisci
    Asayisci
    Asayisci's avatar
    Kayıt Tarihi: 14/Eylül/2009
    Erkek
    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ı.

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    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

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    EmQceR
    EmQceR's avatar
    Kayıt Tarihi: 14/Kasım/2007
    Erkek
    Asayisci bunu yazdı

    Oracle da böyle bir sorun olmadı da hocam ondan sordum. SP ve triggerin içeriğini yazabilir misin?


    Bu Yüce Türk Milleti ne ihanetler gördü hepsinin üstesinden gelmeyi başararak tarihe nice zaferler yazdırdı. Bu Millet Kuva-yı milliye hareketini yeniden başlatır. Sivas Kongresini yeniden toplar, Ya İstiklal, Ya Ölüm diye haykırır ve gereğini yapar. Türk Milleti ihaneti ve hainleri hiç affetmez. Dileğimiz odur ki bu iş sandıkta bitsin, aksi halde "sürüye dalmayı göze alan Kurt, çobanın da, köpeğinde hesabını yapmaz."
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsayisciAsayisci
    Asayisci
    Asayisci's avatar
    Kayıt Tarihi: 14/Eylül/2009
    Erkek
    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?

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsayisciAsayisci
    Asayisci
    Asayisci's avatar
    Kayıt Tarihi: 14/Eylül/2009
    Erkek

    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

     

  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    EmQceR
    EmQceR's avatar
    Kayıt Tarihi: 14/Kasım/2007
    Erkek

    Hocam basit şekilde SQL server da da trigger ve SP oluşturdum. SP ye delete işlemini koydum trigger a da şu tabloda silme işlemi olduktan sonra log tablosuna silindi diye kayıt ekle dedim oldu. Senin kodlara da bakayım


    Bu Yüce Türk Milleti ne ihanetler gördü hepsinin üstesinden gelmeyi başararak tarihe nice zaferler yazdırdı. Bu Millet Kuva-yı milliye hareketini yeniden başlatır. Sivas Kongresini yeniden toplar, Ya İstiklal, Ya Ölüm diye haykırır ve gereğini yapar. Türk Milleti ihaneti ve hainleri hiç affetmez. Dileğimiz odur ki bu iş sandıkta bitsin, aksi halde "sürüye dalmayı göze alan Kurt, çobanın da, köpeğinde hesabını yapmaz."
Toplam Hit: 617 Toplam Mesaj: 18
mssql trigger stored procedure