Aracılığıyla paylaş


Eklenen ve silinen tablolar'ı kullanma

DML tetikleyicisi ifadelerini kullanan iki özel tablo: the deleted table and the inserted tables.SQL Server automatically creates and manages these tables.Bazı veri değişiklikleri etkilerini sınamak ve DML tetikleyicisi eylemler için koşullar için bu geçici, bellekte yerleşik tabloları kullanabilirsiniz.Doğrudan tablolardaki verileri değiştiremez veya CREATE INDEX gibi tablolarda veri tanımlama dili (DDL) işlemlerini gerçekleştirir.

, DML tetikleyiciler,eklenen ve Silinen tabloları aşağıdakileri gerçekleştirmek için öncelikle kullanılır:

  • Tablolar arasında başvuru bütünlüğü genişletir.

  • Ekleyin veya bir görünümü temel temel tablolardaki verileri güncelleştirmeye.

  • Hatalarını sınama ve hata temel eylem gerçekleştirin.

  • Önce ve sonra bir veri değişikliği tablo durumu arasındaki farkı bulmak ve bu fark temel eylemleri.

The deleted table stores copies of the affected rows during DELETE and UPDATE statements.Bir DELETE veya UPDATE deyim yürütme sırasında satır tetikleyici tablosundan silinir ve transferSilinmiş tablo.The deleted table and the trigger table ordinarily have no rows in common.

The inserted table stores copies of the affected rows during INSERT and UPDATE statements.Bir ekleme veya güncelleştirme işlemi sırasında hem yeni satırlar eklenireklenen tablo ve tetikleyici tablo. Satıreklenen tablo olan kopyalarını tetikleyicisi tabloya. yeni satır

Bir ekleme işlemi tarafından izlenen bir silme işlemi için bir güncelleştirme işlemi benzer; eski satır kopyalanırSilinmiş ilk tablo ve sonra yeni satır tetikleyicisi tabloya ve eklenen tablo. kopyalanır

Zaman, küme tetikleyen koşullar, kullanıneklenen ve uygun bir şekilde harekete tetikleyici. eylem için Silinmiş tabloları Başvuru daSilinmiş INSERT veya eklenen tablo DELETE sınarken sınarken tablo hatalara neden olmaz, bu tetikleyici test tabloları tüm bu durumlarda. satır içeriyor

Not

Tetikleyici eylemleri bir veri değişikliği efektleri satır sayısına bağlıdır, multirow veri değişiklikleri (bir deyim temel alan bir INSERT, DELETE veya UPDATE) için sınama (örneğin, @@ ROWCOUNT incelenmesi) kullanın ve uygun eylemleri.

SQL Server 2008izin vermez içintext,ntext, orimagesütun başvurularıeklenenSilinmiş için ve tabloları sonra tetikler. Ancak, bu veri türleri yalnızca geriye dönük uyumluluk amacıyla dahil edilir.Büyük miktarda veri için tercih edilen saklama kullanmaktırvarchar(max),nvarchar(max), vevarbinary(max)veri türü.Hem sonra ve INSTEAD OF tetikleyen desteğivarchar(max),nvarchar(max), vevarbinary(max)verieklenen and deleted tables.Daha fazla bilgi için bkz: (Transact-SQL) TRIGGER CREATE.

Bir örnek olarak kullanılacak bir tetikleyici eklenen tabloya'iş kuralları uygula

CHECK kısıtlamaları yalnızca tablo düzey ya da sütun düzey kısıtlaması tanımlandığı sütunlara başvurabilir olduğundan, herhangi bir çapraz tablo kısıtlamaları (Bu örnekte, iş kuralları), Tetikleyiciler tanımlanmış olmalıdır.

Aşağıdaki örnek, bir DML tetikleyicisi oluşturur.Bu tetikleyici, yeni bir satınalma siparişi eklemek girişimi yapıldığında, satıcı iyi için Kredi notu emin olmak için denetim yapar PurchaseOrderHeader TABLO. Yeni eklenmiş olan satınalma siparişine karşılık gelen satıcının Kredi notu elde etmek içinVendortablonun başvurulan olmalı ve ile katılaneklenen tablo.Kredi notu çok düşükse, bir ileti görüntülenir ve ekleme olmayan yürütmek.

Not

DML sonra tetikleyici birden fazla satır güncelleştirme örnekleri görmek için bkz:DML Tetikleyicileri MultiRow ile ilgili konular.

INSTEAD OF Tetikleyicileri eklenen ve silinen tablo kullanma

The inserted and deleted tables passed to INSTEAD OF triggers defined on tables follow the same rules as the inserted and deleted tables passed to AFTER triggers.Biçimi,eklenen ve tablo Silinen aynıdır INSTEAD OF tetikleyicisi tanımlanan tablo biçimini.Her bir sütuneklenen ve doğrudan bir sütun, temel tablo. Silinmiş tablo haritalar

Tablo bir INSTEAD OF tetikleyicisi yok gibi ne zaman bir INSTEAD OF tetikleyicisi olan bir tabloya başvuran bir INSERT veya UPDATE deyim sütunlar için değer girmelisiniz ilgili aşağıdaki kuralları aynıdır:

  • İçin hesaplanan değer belirtilemez sütun veya sütunları içeren birtimestampveri türü.

  • IDENTITY_INSERT için bu tablo açık değilse bir IDENTITY özellik içeren sütunlar için değer belirtilemez.INSERT deyimleri, IDENTITY_INSERT açık olduğunda, bir değer girmeniz gerekir.

  • Gereken INSERT deyimleri tedarik değerleri tüm NOT NULL DEFAULT kısıtlamaları olan sütunlar.

  • Hesaplanan, kimliği dışında tüm sütun ya datimestampsütun, değerler, boşluk, olanak sağlayan bir sütun için isteğe bağlı veya tüm NOT NULL sütun olan varsayılan bir tanımı.

Başvuran bir INSTEAD OF tetikleyicisi sahip bir görünüm, bir INSERT, UPDATE veya DELETE deyimDatabase EngineTetikleyici karşı herhangi bir doğrudan işlem alma yerine çağırır bir tablo.Gösterilen bilgileri tetikleyici kullanmanızeklenen ve biçimi tablo Silinen görünüm için oluşturulan ve eklenen bilgiler, temel tablo. veri biçiminin farklı olsa bile temel tablolarda, istenen eylem gerçekleştirmek için gereken tüm ifadeleri oluşturmak için Silinmiş tabloları

Biçimi,eklenen tablo Silinen geçirilen için bir INSTEAD OF görünümü. için tanımlanan SELECT deyiminin seçim listesi eşleşen tetikleyici tanımlanmış bir görünümü Örneğin:

CREATE VIEW EmployeeNames (EmployeeID, LName, FName)
AS
SELECT e.EmployeeID, c.LastName, c.FirstName
FROM AdventureWorks.HumanResources.Employee e 
JOIN AdventureWorks.Person.Contact c
ON e.ContactID = c.ContactID

Sonuç için bu görünümü üç sütunu vardır: intsütun ve iki nvarcharsütunlar.The inserted and deleted tables passed to an INSTEAD OF trigger defined on the view also have an int column named EmployeeID, an nvarchar column named LName, and an nvarchar column named FName.

Seçim listesi görünümü, doğrudan tek bir temel tablo sütun eşleme ifadeler de içerebilir.Bir sabit veya işlev çağrısı gibi deyimleri görüntülemek, bir sütun başvurusu ve yok sayılabilir.Karmaşık ifadeler birden çok sütun başvurusu henüzeklenen yalnızca bir değeri her eklenen satır. ve tablo Silinen sahip Karmaşık ifade içeren, hesaplanan bir sütun oldukları aynı sorunları görünümünde basit ifade için uygulanır.Bu tür ifadeler görünümü üzerinde bir INSTEAD OF tetikleyicisi işlemesi gerekir.Daha fazla bilgi için bkz: Ifadeler ve hesaplanan sütunlar içinde ıNSTEAD OF Tetikleyicileri.

See Also

Concepts