[Code Review] Trigger Çoklu Update

Triggerlarla çalışıyorken bir sorun ile daha karşılaşmak beni gerçekten üzdü. Bu seferki hata çalışabilir diye düşünüp çalışmayan bir kurguyla alaklı. Bir trigger yazdım ve bu trigger sayesinde Service Broker üzerine bazı bilgilerin geçmesini istiyorum. Yazdığım trigger;

şeklinde. Bu trigger’ ı tetiklemek için;

çalıştırdığımda sadece ilk kayıt için Service Broker tarafında mesaj oluştuğunu farkketim. Ancak sorguyu tekli hale getirdiğimde;

trigger’ ın 4 tane kayıt attığını gördüm. Biraz araştırıp inceledikten sonra aslında triggerın mantıklı çalıştığını söyleyebilirim. Her Update sorgusunda trigger çalışması için tasarlanmış, sorgu sonucunda kaç tane kaydın etkilendiği onun için önemli değil. Zaten etkilenen kayıtları Inserted içerisinde saklıyor. Bu yüzden trigger’ ımı Cursor ile kayıtlar arasında dönmeyi ekledim ve trigger sorgum;

şekline geldi. Tekli Update çalıştırdığımda Service Broker içinde sorgudan etkilenen bütün kayıtları görebildim ve sorunu çözmüş oldum.

Kayıtların tek tek güncellenmesi işimi görmesine rağmen, bazı özel durumlarda yapılan toplu updateler için triggerın bu şekilde güncellenmesi en kolay çözüm olmuş oldu. Aksi taktirde özel bir durum içersinde kayıtların hepsinin çekilip, tek tek güncellenmesi sistemi yorması bir tarafa, hızlı aksiyon almak istediğiniz zaman size değerli olacak zamanı kaybettirebilir. Kayıtların ortak özellikleri üzerinden gitmek daha iyi bir çözüm olacaktır.

Not: Update sorgularının etkilendiği kayıt sayısı birden fazla olsa bile sonuçların tek bir parça olduğunu düşünmek trigger ile geliştirme yaparken aklımızdan çıkmaması gereken bir nokta olmalı.

This article has 1 comments

  1. samet

    takdir ettim doğrusu 🙂

    gerçekten uğraştırıcı bir problemdi çok mantıklı bir çözüm 😀

Yorumlayın