![]() |
|
| |||||||
|
| | Seçenekler |
|
#1
| |||
| | |||
Tetikleyicinin Birden Fazla Kayıt İçin ÇalışmasıYazdığız tetikleyici eğer inserted tablosundan önce değerleri alıp sonra işlem yaptırıyorsanız aşağıdaki örnekte olduğu gibi, trigger birden fazla kayıt eklendiğinde sadece son kayıt için işlem yapacaktır: Deneme adında bir tablomuz olsun tabloda Temp1,Temp2,Temp12 adında 3 alanımız olsun, Temp12 alanında Temp1 + Temp2 değeri bulunuması gereksin. Bunu sağlayacak tetikleyici aşağıdaki gibidir. Örnek 1 -------------------------------------------------------------------------------- CREATE TRIGGER TR_Deneme ON dbo.Deneme FOR INSERT,UPDATE AS DECLARE @vTemp1 VARCHAR(25), @vTemp2 VARCHAR(25), @vTemp12 VARCHAR(50), SELECT @vTemp1 = Temp1 , @vTemp2 = Temp2 FROM inserted SET @vTemp12 = @vTemp1 + @vTemp2 UPDATE Deneme SET Temp12 = @vTemp12 WHERE @vTemp1 = Temp1 AND @vTemp2 = Temp2 Bu örnekte görüldüğü gibi trigger tek kayıt eklendiğinde bu işlemi yapacaktır ve doğru çalışacaktır. Oysa birden fazla kayıt ekleme yaptığınızda ise sadece son kayıdın Temp21 alanı değişecektir. Birden fazla kayıt ekleme olduğunda tetikleyicinin çalışması için : Örnek 2 -------------------------------------------------------------------------------- CREATE TRIGGER TR_Deneme ON dbo.Deneme FOR INSERT,UPDATE AS UPDATE d SET d.Temp12 = i.Temp1 + i.Temp2 FROM Deneme d,inserted i WHERE d.Temp1 = i.Temp1 AND d.Temp2 = i.Temp2 Yukarıdaki yapı birden fazla kayıt eklendiğinde herbir kayıt için tetikleyicinin doğru çalışmasını sağlayacaktır. inserted tablosu üzerinden ana tabloya inner join kurarak sorunu çözebiliriz. Yani birden fazla kayıt ekleme olması düşünülen tablolardaki tetikleyiciler için inserted tablosundan değişkenlere değer atamak yerine update query içinde inserted tablosu üzerinden join kurarak ve yapılacak işlemleri T-SQL kodlarıyla değil SQL kodlarıyla yaparak her bir eklemede tetikleyicinin çalışması sağlanabilir.Daha karmaşık yapılarda IF yerine CASE WHEN <değişken>"Oparatör"<Değer> THEN <Sonuç> ELSE <Sonuç> END kullanarak çözebilirsiniz. Daha da karmaşık yapılar için daha çok SQL komutu kullanmak gerekebilir. |
![]() |
| Arama Etiketleri: birden, calismasi, kayit, tetikleyicinin |
| Seçenekler | |
| |
Benzer Konular | ||||
| Konu | Konu Açanlar | Forum | Cevaplar | Güncel Mesajlar |
| Arama Motorların Direkt Kayıt Siteleri, Arama Motorları Kayıt Linkleri | By_ŞeytaN | Genel | 17 | 28-11-2008 09:59 |
| birden fazla reklam alanı olusturmak adsense gelirini etkilermi? | egitimbilgisi | Google Adsense | 2 | 18-08-2008 12:39 |
| ListBox veya ComboBox'ta seçili bir veya birden fazla öğeyi seçilmemiş hale getirme | Celebrian | Delphi | 0 | 24-12-2007 02:15 |
| Birden fazla fonksiyonlu HTML Site | CMDizayn | SMF | 0 | 18-12-2007 02:14 |
| Microsoft VirtualWiFi ; Tek WLan kartla birden fazla kablosuz ağa bağlanın | LeaveMeALoNe | Donanım Haberleri | 0 | 19-11-2007 07:56 |
![]() | ![]() |