clr Tetikleyicileri oluşturma
Bu konuda nasıl oluşturulacağı açıklanır bir Transact-SQLdml tetikleyici kullanarak SQL Server Management Studiokullanarak Transact-SQLTETIKLEYICI create deyimi.
Başlamadan Önce
Sınırlamalar ve Kısıtlamalar
dml Tetikleyiciler oluşturmayla ilgili kısıtlamaları ve sınırlamaları bir listesi için bkz: CREATE TRIGGER (Transact-SQL).
İzinler
Tablo veya Görünüm tetikleyici oluşturulmaktadır alter izni gerektirir.
dml tetikleyici oluşturma
Aşağıdakilerden birini kullanabilirsiniz:
SQL Server Management Studio
Transact-SQL
SQL Server Management Studio Kullanarak
İçinde Object Explorer, örneğine bağlanmak Veritabanı Altyapısıve bu örneği genişletin.
Genişletme veritabanları, genişletme AdventureWorks2012 veritabanı, Genişlet tablolar ve tablo genişletin Purchasing.PurchaseOrderHeader.
Sağ Tetikleyicilerive seçin Yeni Tetikleyici.
Tarih sorgu menüsünü tıklayın Şablon parametreler için değerler belirtin. Bunun yerine açmak için (Ctrl-Shift-m) basabilirsiniz Şablon parametreler için değerler belirtin iletişim kutusu.
İçinde Şablon parametreler için değerler belirtin iletişim kutusunda, gösterilen parametreler için aşağıdaki değerleri girin.
Parametre
Değer
Yazar
Your name
Oluşturma tarihi
Today's date
Açıklama
Satıcının kredi derecelendirme eklenecek satıcı ile yeni bir satınalma siparişi vermeden önce denetler.
Schema_Name
Satın alma
Trigger_Name
NewPODetail2
Table_Name
PurchaseOrderDetail
Data_Modification_Statement
GÜNCELLEŞTİRMEYİ kaldırmak ve listeden SİLEBİLİRSİNİZ.
Click OK.
İçinde Sorgu Düzenleyicisi, açıklamayı değiştirin -- Insert statements for trigger hereaşağıdaki deyimi ile:
IF @@ROWCOUNT = 1 BEGIN UPDATE Purchasing.PurchaseOrderHeader SET SubTotal = SubTotal + LineTotal FROM inserted WHERE PurchaseOrderHeader.PurchaseOrderID = inserted.PurchaseOrderID END ELSE BEGIN UPDATE Purchasing.PurchaseOrderHeader SET SubTotal = SubTotal + (SELECT SUM(LineTotal) FROM inserted WHERE PurchaseOrderHeader.PurchaseOrderID = inserted.PurchaseOrderID) WHERE PurchaseOrderHeader.PurchaseOrderID IN (SELECT PurchaseOrderID FROM inserted) END;
Sözdizimi geçerli, üzerinde doğrulamak için sorgu menüsünden tıklatın ayrıştırma. Bir hata iletisi döndürülür, deyim üzerinde ve gerektiğinde doğru bilgilerle karşılaştırmak ve bu adımı yineleyin.
dml tetikleyici oluşturmak için sorgu menüsünü tıklayın Execute. dml tetikleyici veritabanındaki bir nesne oluşturulur.
Nesne Explorer'da listelenen dml tetikleyici görmek için sağ Tetikleyicileri ve yenilemek.
[Üst]
Transact-SQL'i Kullanma
İçinde Object Explorer, örneğine bağlanmak Veritabanı Altyapısıve bu örneği genişletin.
Dan Dosya menüsünü tıklayın Yeni sorgu.
Kopyalama ve aşağıdaki örnek sorgu penceresine yapıştırın ve tıkırtı Execute. Bu örnek, yukarıdaki gibi aynı saklı dml tetikleyici oluşturur.
-- Trigger valid for multirow and single row inserts -- and optimal for single row inserts. USE AdventureWorks2012; GO CREATE TRIGGER NewPODetail3 ON Purchasing.PurchaseOrderDetail FOR INSERT AS IF @@ROWCOUNT = 1 BEGIN UPDATE Purchasing.PurchaseOrderHeader SET SubTotal = SubTotal + LineTotal FROM inserted WHERE PurchaseOrderHeader.PurchaseOrderID = inserted.PurchaseOrderID END ELSE BEGIN UPDATE Purchasing.PurchaseOrderHeader SET SubTotal = SubTotal + (SELECT SUM(LineTotal) FROM inserted WHERE PurchaseOrderHeader.PurchaseOrderID = inserted.PurchaseOrderID) WHERE PurchaseOrderHeader.PurchaseOrderID IN (SELECT PurchaseOrderID FROM inserted) END;
[Üst]