DML tetikleyicisi yürütme
Bu nedenle, Tetikleyicileri hiçbir zaman bir kısıtlama ihlali oluştuğunda; yürütülen SONRA bu Tetikleyicileri kısıtlama ihlalleri engelleyebilecek herhangi bir işlem için kullanılamaz.
INSTEAD OF tetikleri yerine bir tetikleyici eylem yürütülür.Bu Tetikleyicileri sonra yürütülen eklenen and silindi tablolar temel tablo değişiklikler oluşturulan yansıtma, ancak diğer eylemleri önce alınır.Bunlar; bu nedenle, kısıtlama eylemleri tamamlayıcı ön gerçekleştirebileceği herhangi kısıtlamaları önce yürütülür.
Bir tabloda tanımlı bir INSTEAD OF tetikleyicisi genellikle INSTEAD OF tetikleyicisi yeniden ateşlenmesine, bir tabloda bir deyim yürütür, tetikleyici özyinelemeli olarak çağrılmaz.Bunun yerine, tablo yok tetikleyicisi ıNSTEAD OF vardı ve zincirdeki kısıtlama operasyonların ve tetikleyici yürütmeler SONRA başlar, gibi deyim işlenir.Örneğin, DML tetikleyicisi ıNSTEAD OF INSERT bir tetikleyici için bir tablo olarak tanımlanır ve tetikleyici, aynı tabloda INSERT deyim yürütür, INSTEAD OF tetikleyicisi tarafından yürütülen bir INSERT deyim tetikleyici yeniden çağırmaz.Tetikleyici tarafından yürütülen INSERT kısıtlama eylemleri gerçekleştirme ve SONRA INSERT tablo için tanımlanmış tüm Tetikleyicileri tetikleme işlemini başlatır.
Bir görünüm tanımlı bir INSTEAD OF tetikleyicisi genellikle INSTEAD OF tetikleyicisi yeniden ateşlenmesine analiz görünümünün karşı bir deyim yürütür, özyinelemeli olarak çağrılmaz.Bunun yerine, deyim görünümü temel bir temel tablolara yönelik değişiklikler olarak giderilmiştir.Bu durumda, görünüm tanımının tüm kısıtlamalar güncelleştirilebilir bir görünümü için uygun olması gerekir.Güncelleştirilebilir görünümler tanımı için bkz: Bir görünümü kullanarak verileri değiştirme. Örneğin, bir görünüm için bir ıNSTEAD OF UPDATE tetikleyicisi olarak DML tetikleyicisi tanımlanmış ve tetikleyici aynı görünüme başvuran bir UPDATE deyim yürütür, INSTEAD OF tetikleyicisi tarafından yürütülen UPDATE deyim tetikleyici yeniden çağırmaz.Tetikleyici tarafından çalıştırılan GÜNCELLEŞTIRME, görünümü bir INSTEAD OF tetikleyicisi varsa, karşı görünümü işlenir.Bu GÜNCELLEŞTIRME tarafından değiştirilen sütunları tek bir temel tablo çözülmelidir.Her değişiklik için temel bir temel tablo kısıtlamaları uygulamak ve SONRA tablo için tanımlanmış Tetikleyicileri tetikleme zincirdeki başlatır.
DML tetikleyicisi performans yükü genellikle düşüktür.DML tetikleyicisi çalıştıran saat, çoğunlukla bellek veya veritabanı aygıttaki diğer tablolar başvuru harcandığını.The deleted and inserted tables are always in memory.Tetikleyici tarafından başvuruda bulunulan diğer tablonun konumunu, işlem gerektiriyor süreyi belirler.
Not
Performans üzerindeki etkisini olası negatif nedeniyle DML Tetikleyicileri imleçler kullanılması önerilir.Imleçleri yerine, mantığı, satır kümesi kümesi tabanlı birden çok satırı etkileyecek bir DML tetikleyicisi tasarlamak için kullanın.
DML tetikleyicisi yürütme ve bölümlenmiş görünümler
Bunlar, yangın şekilde bölümlenmiş görünümün underlie tablolarında GÜNCELLEŞTIR ve SIL Tetikleyicileri yangın biçimi nedeniyle değiştirildi SQL Server 2000. Içinde SQL Server 2000, görünümün temel tablolarına tanımlanan UPDATE veya DELETE Tetikleyicileri yerel ya da dağıtılmış, bölümlenmiş görünümün karşı bir UPDATE veya DELETE deyim kesilirken, yangın. Bunlar, tetikleyiciler, güncelleştirme tarafından etkilenen ya da silme işlemi tablolarda içerir.Içinde SQL Server 2008 ve SQL Server 2005, bir UPDATE veya DELETE güncelleştirmeyle tetikleyici tanımlanmış temel tablo etkilenmişse geçirilir tetiklemek ya da silme işlemi. Bu davranış için iki AFTER aynıdır ve ıNSTEAD OF tetikleri.
Örneğin, bölümlenmiş görünümün göz önünde bulundurun. BD alanları içeren tablolarıT1 and T2.Ayrıca, her ikisi de T1 and T2 UPDATE Tetikleyicileri göre tanımlanmış olması.Içinde SQL Server 2000, karşı verilen bir UPDATE deyim BD satırları yalnızca etkileyenT1 iki üzerinde UPDATE tetikleyicisi neden olurT1 and T2 baþlatmak için.Içinde SQL Server 2008 ve SQL Server 2005, yalnızca tanımlanan UPDATE tetikleyicisi T1 harekete geçirilir.
Aşağıdaki tablolarda, davranış değişiklikleri özetlenmektedir.
, Güncelleştir, Ekle veya yerel bölümlenmiş görünümün operasyonlar Sil
|
SQL Server 2000 |
Geçerli sürüm |
---|---|---|
TETİKLEYİCİ EKLE |
Yalnızca etkilenen tablolarda harekete geçirilir. |
Yalnızca etkilenen tablolarda harekete geçirilir. |
GÜNCELLEŞTİRME TETİKLEYİCİSİ |
Bu tür bir tetikleyici tanımlanmış bölümlendirilmiş görünüm altındaki tüm tablolar için harekete geçirilir. |
Yalnızca etkilenen tablolarda harekete geçirilir. |
TETİKLEYİCİ SİLME |
Bu tür bir tetikleyici tanımlanmış bölümlendirilmiş görünüm altındaki tüm tablolar için harekete geçirilir. |
Yalnızca etkilenen tablolarda harekete geçirilir. |
Ekle, Güncelleştir, ya da dağıtılmış, bölümlenmiş bir görünüm operasyonlar Sil
|
SQL Server 2000 |
Geçerli sürüm |
---|---|---|
TETİKLEYİCİ EKLE |
Yalnızca etkilenen tablolarda dağıtılmış bölümlü görünüm harekete geçirilir.Tabloları etkileniyorsanız örneği yerel ve uzak örnek tablolar için tanımlanmış olan Tetikleyicileri harekete. |
Yalnızca etkilenen tablolarda dağıtılmış bölümlü görünüm harekete geçirilir.Tabloları etkileniyorsanız örneği yerel ve uzak örnek tablolar için tanımlanmış olan Tetikleyicileri harekete. |
GÜNCELLEŞTİRME TETİKLEYİCİSİ |
Bu tür bir tetikleyici tanımlanmış bölümlenmiş görünümün temel tüm tabloları harekete geçirilir. |
Uzaktan tüm tablolar için geçirilir örnek üzerinde bu tür bir tetikleyici tanımlanmış.Yalnızca yerel örneğinde etkilenen tablolarda harekete geçirilir. |
TETİKLEYİCİ SİLME |
Bu tür bir tetikleyici tanımlanmış bölümlendirilmiş görünüm altındaki tüm tablolar için harekete geçirilir. |
Uzaktan tüm tablolar için geçirilir örnek üzerinde bu tür bir tetikleyici tanımlanmış.Yalnızca yerel örneğinde etkilenen tablolarda harekete geçirilir. |