Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
DML tetikleyicisi, tetikleyicide tanımlanan tabloyu veya görünümü etkileyen bir veri işleme dili (DML) olayı gerçekleştiğinde otomatik olarak etkili olan özel bir saklı yordam türüdür. DML olayları INSERT, UPDATE veya DELETE deyimlerini içerir. DML tetikleyicileri iş kurallarını ve veri bütünlüğünü zorlamak, diğer tabloları sorgulamak ve karmaşık Transact-SQL deyimleri eklemek için kullanılabilir. Tetikleyici ve tetikleyen deyim, tetikleyicinin içinden geri alınabilen tek bir işlem olarak kabul edilir. Ciddi bir hata algılanırsa (örneğin, yetersiz disk alanı), tüm işlem otomatik olarak geri alınır.
Fayda -ları
DML tetikleyicileri, varlık bütünlüğünü veya etki alanı bütünlüğünü zorlayabilecekleri kısıtlamalara benzer. Genel olarak, varlık bütünlüğü her zaman, kısıtlamaların bir parçası olan PRIMARY KEY ve UNIQUE veya kısıtlamalardan bağımsız olarak oluşturulan dizinler tarafından en düşük düzeyde zorlanmalıdır. Alan bütünlüğü CHECK kısıtlamaları aracılığıyla uygulanmalı ve ilişkisel bütünlük (RI) FOREIGN KEY kısıtlamaları aracılığıyla zorlanmalıdır. DML tetikleyicileri en çok kısıtlamalar tarafından desteklenen özellikler uygulamanın işlevsel gereksinimlerini karşılayamıyorsa yararlıdır.
Aşağıdaki liste, DML tetikleyicilerini kısıtlamalarla karşılaştırır ve DML tetikleyicilerinin kısıtlamalara göre ne zaman avantajları olduğunu tanımlar.
DML tetikleyicileri, veritabanındaki ilgili tablolar aracılığıyla değişiklikleri art arda ekleyebilir; ancak, bu değişiklikler art arda bilgi tutarlılığı kısıtlamaları kullanılarak daha verimli bir şekilde yürütülebilir.
FOREIGN KEYkısıtlamalar,REFERENCESyan tümcesi basamaklı bir referans eylemi tanımlamadığı sürece, sütun değerini sadece başka bir sütundaki değerle tam eşleşmeyle doğrulayabilir.Kötü amaçlı veya yanlış
INSERT,UPDATEveDELETEişlemlerine karşı koruma sağlayabilir veCHECKkısıtlamalarla tanımlanandan daha karmaşık diğer kısıtlamaları zorunlu kılabilir.Kısıtlamalardan farklı olarak
CHECK, DML tetikleyicileri diğer tablolardaki sütunlara başvurabilir. Örneğin bir tetikleyici, eklenen veya güncelleştirilen verilerle karşılaştırmak ve verileri değiştirme veya kullanıcı tanımlı bir hata iletisi görüntüleme gibi başka eylemler gerçekleştirmek için başka bir tablodan bir tablo kullanabilirSELECT.Bir veri değişikliğinden önce ve sonra tablonun durumunu değerlendirebilir ve bu farka göre eylemler gerçekleştirebilirler.
Tablodaki aynı türde (
INSERT,UPDATE, veyaDELETE) birden çok DML tetikleyicisi, aynı değişiklik deyimine yanıt olarak birden çok farklı eylemin gerçekleştirilebilmesini sağlar.Kısıtlamalar yalnızca standartlaştırılmış sistem hata iletileri aracılığıyla hatalar hakkında iletişim kurabilir. Uygulamanız özelleştirilmiş iletileri ve daha karmaşık hata işlemeyi gerektiriyorsa veya bu iletilerden yararlanabiliyorsa, bir tetikleyici kullanmanız gerekir.
DML tetikleyicileri bilgi tutarlılığını ihlal eden değişikliklere izin verebilir veya geri alabilir, böylece veri değişikliği girişimi iptal edilebilir. Böyle bir tetikleyici, yabancı anahtarı değiştirdiğinizde ve yeni değer birincil anahtarıyla eşleşmediğinde geçerli olabilir. Ancak,
FOREIGN KEYkısıtlamalar genellikle bu amaç için kullanılır.Tetikleyici tablosunda kısıtlamalar varsa,
INSTEAD OFtetikleyici yürütüldükten sonra ancakAFTERtetikleyici yürütülmeden önce denetlenirler. Kısıtlamalar ihlal edilirse tetikleyiciINSTEAD OFeylemleri geri alınır veAFTERtetikleyici yürütülemez.
DML tetikleyicisi türleri
AFTER tetikleyicisi
AFTER tetikleyicileri, INSERT, UPDATE, MERGE veya DELETE deyiminin eylemi gerçekleştirildikten sonra yürütülür.
AFTER bir kısıtlama ihlali oluşursa tetikleyiciler hiçbir zaman yürütülemez. Bu nedenle, bu tetikleyiciler kısıtlama ihlallerini önleyebilecek herhangi bir işlem için kullanılamaz. Bir deyimde INSERT belirtilen her UPDATE, DELETEveya MERGE eylemi için, her DML işlemi için karşılık gelen tetikleyici tetiklenir.
Tetikleyici YERINE
INSTEAD OF tetikleyiciler tetikleyici deyiminin standart eylemlerini geçersiz kılar. Bu nedenle, bunlar bir veya daha fazla sütunda hata veya değer denetimi gerçekleştirmek ve satır veya satırları eklemeden, güncelleştirmeden veya silmeden önce başka eylemler gerçekleştirmek için kullanılabilir. Örneğin, bir bordro tablosundaki saatlik ücret sütununda güncelleştirilen değer belirtilen değeri aştığında, bir hata iletisi oluşturup işlemi geri almak veya kaydı bordro tablosuna eklemeden önce denetim kaydına yeni bir kayıt eklemek için bir tetikleyici tanımlanabilir. Tetikleyicilerin INSTEAD OF birincil avantajı, güncelleştirmeleri desteklemek için güncelleştirilemez görünümleri etkinleştirmeleridir. Örneğin, birden çok temel tabloya dayanan bir görünüm, birden fazla tablodaki verilere başvuran ekleme, güncelleme ve silmeleri desteklemek için INSTEAD OF tetikleyicisini kullanmalıdır. Tetikleyicilerin INSTEAD OF bir diğer avantajı, bazı toplu iş bölümlerini reddedebilen mantık kodlarken diğer bölümlerin başarılı olmasını sağlamaktır.
Bu tablo, AFTER ve INSTEAD OF tetikleyicilerinin işlevselliğini karşılaştırır.
| İşlev |
AFTER tetikleyicisi |
INSTEAD OF tetikleyicisi |
|---|---|---|
| Uygulanabilirlik | Tablolar | Tablolar ve görünümler |
| Tablo veya görünüm başına miktar | Tetikleyici başına birden çok eylem (UPDATE, DELETEve INSERT) |
Her tetikleme eylemi için bir adet (UPDATE, DELETE, ve INSERT) |
| Kademeli referanslar | Hiçbir kısıtlama uygulanmaz |
INSTEAD OF UPDATE ve DELETE tetikleyicilerine, basamaklı bilgi tutarlılığı kısıtlamalarının hedefi olan tablolarda izin verilmez. |
| İdam | Sonra: Kısıtlama işleme Bildirimsel başvuru eylemleri inserted ve deleted tablo oluşturmaTetikleme eylemi |
Önce: Kısıtlama işleme Yerine: Tetikleyici Hareket Sonra: inserted ve deleted tablo oluşturma |
| Yürütme sırası | İlk ve son yürütme belirtilebilir | Uygulanamaz |
varchar(max), nvarchar(max) ve varbinary(max) sütun başvuruları inserted ve deleted tablolarında |
İzin Verilir | İzin Verilir |
metin, ntext ve görüntü sütunu başvuruları inserted ve deleted tablolarında |
İzin verilmiyor | İzin Verilir |
CLR tetikleyicisi
Ortak dil çalışma zamanı (CLR) tetikleyicisi bir AFTER veya INSTEAD OF tetikleyicisi olabilir. CLR tetikleyicisi bir Veri Tanımı Dili (DDL) tetikleyicisi de olabilir. CLR tetikleyicisi, Transact-SQL saklı yordamı yürütmek yerine .NET Framework'te oluşturulan ve SQL Server'a yüklenen bir derlemenin üyesi olan yönetilen kodda yazılmış bir veya daha fazla yöntemi yürütür.
İlgili görevler
| Görev | Makale |
|---|---|
| DML tetikleyicisi oluşturmayı açıklar. | DML tetikleyicileri oluşturma |
| CLR tetikleyicisi oluşturmayı açıklar. | CLR tetikleyicileri oluşturma |
| Hem tek satırlı hem de çok satırlı veri değişikliklerini işlemek için DML tetikleyicisi oluşturmayı açıklar. | Birden Çok Veri Satırını İşleyecek DML Tetikleyicileri Oluşturma |
| Tetikleyicilerin nasıl iç içe yerleştirileceğini açıklar. | İç İçe Tetikleyiciler Oluşturma |
AFTER tetikleyicilerinin tetiklenme sıralarının nasıl belirtileceğini açıklar. |
İlk ve Son Tetikleyicileri Belirtme |
| Tetikleyici kodunda özel eklenen ve silinen tabloların nasıl kullanılacağını açıklar. | Eklenen ve silinen tabloları kullanma |
| DML tetikleyicisini değiştirme veya yeniden adlandırmayı açıklar. | DML Tetikleyicilerini Değiştirme veya Yeniden Adlandırma |
| DML tetikleyicileri hakkındaki bilgilerin nasıl görüntüleyebileceğinizi açıklar. | DML Tetikleyicileri Hakkında Bilgi Alma |
| DML tetikleyicilerinin nasıl silineceğini veya devre dışı bırakacağınız açıklanır. | DML Tetikleyicilerini Silme veya Devre Dışı Bırakma |
| Tetikleyici güvenliğinin nasıl yönetileceğini açıklar. | Tetikleyici güvenliğini yönetme |
İlgili içerik
- TETİKLEYİCİ OLUŞTUR (Transact-SQL)
- ALTER TRIGGER (Transact-SQL)
- DROP TRIGGER (Transact-SQL)
- TETİKLEMİYİ DEVRE DIŞI BIRAK (Transact-SQL)
- Tetikleyici İşlevleri (Transact-SQL)