ALTER TRIGGER (Transact-SQL)
DML, DDL ve CREATE TRIGGER deyim daha önce oluşturulan oturum açma tetikleyici tanımını değiştirir.Tetikleyiciler, CREATE TRIGGER kullanılarak oluşturulur.They can be created directly from Transact-SQL statements or from methods of assemblies that are created in the Microsoft .NET Framework common language runtime (CLR) and uploaded to an instance of SQL Server.ALTER TRIGGER deyiminde kullanılan parametreleri hakkında daha fazla bilgi için bkz:(Transact-SQL) TRIGGER CREATE.
Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)
ALTER TRIGGER schema_name.trigger_name
ON ( table | view )
[ WITH <dml_trigger_option> [ ,...n ] ]
(FOR | AFTER | INSTEAD OF )
{ [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE ] }
[ NOT FOR REPLICATION ]
AS { sql_statement [ ; ] [ ...n ] | EXTERNAL NAME <method specifier> [ ; ] }
<dml_trigger_option> ::=
[ ENCRYPTION ]
[ <EXECUTE AS Clause> ]
<method_specifier> ::=
assembly_name.class_name.method_name
Trigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE, or UPDATE statement (DDL Trigger)
ALTER TRIGGER trigger_name
ON { DATABASE | ALL SERVER }
[ WITH <ddl_trigger_option> [ ,...n ] ]
{ FOR | AFTER } { event_type [ ,...n ] | event_group }
AS { sql_statement [ ; ] | EXTERNAL NAME <method specifier>
[ ; ] }
}
<ddl_trigger_option> ::=
[ ENCRYPTION ]
[ <EXECUTE AS Clause> ]
<method_specifier> ::=
assembly_name.class_name.method_name
Trigger on a LOGON event (Logon Trigger)
ALTER TRIGGER trigger_name
ON ALL SERVER
[ WITH <logon_trigger_option> [ ,...n ] ]
{ FOR| AFTER } LOGON
AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME < method specifier > [ ; ] }
<logon_trigger_option> ::=
[ ENCRYPTION ]
[ EXECUTE AS Clause ]
<method_specifier> ::=
assembly_name.class_name.method_name
Bağımsız değişkenler
schema_name
DML tetikleyicisi olduğu şema adıdır.DML triggers are scoped to the schema of the table or view on which they are created.schema_name is optional only if the DML trigger and its corresponding table or view belong to the default schema.schema_name cannot be specified for DDL or logon triggers.trigger_name
Değiştirmek için varolan tetikleyici mı.table | view
Tablo veya Görünüm DML tetikleyicisi yürütüldüğü belirtilir.Tablo veya Görünüm tam adını belirten isteğe bağlıdır.database.
Kapsamının geçerli bir DDL tetikleyicisi geçerli veritabanına.Belirtilmezse, tetikleyici harekete herevent_typeorevent_groupgerçekleşir, geçerli veritabanı.TÜM SUNUCU
DDL veya oturum açma tetikleyici kapsamını, geçerli sunucu için geçerlidir.Belirtilmezse, tetikleyici harekete herevent_typeorevent_groupoluşuyor herhangi bir geçerli.ŞİFRELEME
ALTER TRIGGER deyim metnini içeren sys.syscomments sql_dependencies girişleri şifreler.Tetikleyici şu anda yayımlanmış bir parçası olarak gelen kullanarak WITH şifreleme engellerSQL Serverçoğaltma.şifreleme için CLR tetikleyici belirtilemez.Not
Tetikleyici WITH şifreleme kullanılarak oluşturulur, etkin kalmasını istiyorsanız bu seçenek için ALTER TRIGGER deyim içinde yeniden belirtilmesi gerekir.
yürütmek OLARAK
Tetikleyici yürütüldüğü güvenlik bağlamını belirtir.Kullanıcı hesabı denetimi, örneğini sağlarSQL ServerTetikleyici. başvurulan tüm veritabanı nesnelerinin izinlerini doğrulamak için kullandığıDaha fazla bilgi için bkz:yan tümce (Transact-SQL) yürütmek.
Sonra
Tetikleyici yalnızca tetikleyici SQL deyim başarılı bir şekilde yürütüldükten sonra harekete geçirilen belirtir.Bu tetikleyici harekete önce tüm bilgi art arda sıralı eylemleri ve sınırlama denetimleri de başarılı verilmiş olması gerekir.İçin anahtar sözcük belirtilirse, yalnızca sonra varsayılan değerdir.
DML sonra Tetikleyiciler yalnızca temel tanımlanmasını tablo.
YERİNE
DML tetikleyicisi tetikleyici SQL deyim yerine, bu nedenle, eylemleri tetikleyici biri geçersiz kılma yürütülür olduğunu belirtir.Bunun yerine OF DDL veya oturum açma için tetikleyici belirtilemez.En fazla bir INSTEAD OF INSERT, UPDATE veya DELETE deyim her tetikleyici bir tablo ya da görünüm üzerinde tanımlanabilir.Ancak, her görünüm, kendi INSTEAD OF tetikleyicisi olduğu görünümlerinde görünüm tanımlayabilirsiniz.
INSTEAD OF triggers are not allowed on views created by using WITH CHECK OPTION.SQL Server raises an error when an INSTEAD OF trigger is added to a view for which WITH CHECK OPTION was specified.Kullanıcı, bu seçenek, ALTER VIEW INSTEAD OF tetikleyicisi tanımlamadan önce kullanarak kaldırmanız gerekir.
{[DELETE] [,] [EKLE] [,] [GÜNCELLEŞTİRME]} | {[EKLE] [,] [GÜNCELLEŞTİRME]}
Buna karşı çalıştığınız veri değişikliği ifadeleri belirtir tablo veya görüntüleme, DML tetikleyiciyi etkinleştirir.En az bir seçenek belirtilmeli.Bu herhangi bir sırada herhangi bir bileşimini tetikleyici tanımı içinde izin verilir.Birden fazla seçenek belirtilmezse, seçenekleri virgülle ayırın.İçin INSTEAD OF Tetikleyicileri, DELETE seçeneği ON DELETE basamaklı eylem belirten bilgi ilişkisi olan tablolara izin verilmiyor.Benzer şekilde, bir ON UPDATE basamaklı eylem belirten bilgi ilişkisi olan tabloyu güncelleştir seçeneğini izin verilmez.Daha fazla bilgi için bkz:ALTER tablo (Transact-SQL).
event_type
Adı birTransact-SQLDil olay neden olan, yürütme sonrasında DDL tetikleyicisi yangın.Geçerli olaylara ait DDL listelenenDDL olayları.event_group
Önceden tanımlanmış bir grup adıTransact-SQLDil olay.The DDL tetiği harekete sonra yürütmeTransact-SQLolay, ait olduğu dilievent_group.Geçerli olay gruplara ait DDL listelenenDDL olay grupları (ingilizce).Sonra ALTER TRIGGER, çalışmasını bitirdievent_groupaynı zamanda çalışır gibi bir makro ekleyerek olay türlerini kapsayan sys.trigger_events Katalog görünümü.ÇOĞALTMA İÇİN DEĞİL
Tetikleyici söz konusu tabloyu çoğaltma aracısı değiştirir, tetikleyici yürütülmelidir değil, gösterir.Daha fazla bilgi için bkz:Sınırlamaları, kimlik ve Tetikleyicileri NOT ile denetlemek IÇIN çoğaltma.sql_statement
Tetikleyici, koşullar ve eylemler belirtilir.<method_specifier>
Tetikleyici ile bağlamak için derleme yöntem belirtir.The method must take no arguments and return void.class_name must be a valid SQL Server identifier and must exist as a class in the assembly with assembly visibility.Sınıf, iç içe geçmiş bir sınıfı olamaz.
Remarks
ALTER TRIGGER hakkında daha fazla bilgi için notlar Bkz:(Transact-SQL) TRIGGER CREATE.
DML Tetikleyicileri
ALTER TRIGGER supports manually updatable views through INSTEAD OF triggers on tables and views.SQL Server applies ALTER TRIGGER the same way for all kinds of triggers (AFTER, INSTEAD-OF).
İlk ve sonra tablo üzerinde yürütülecek Tetikleyiciler sp_settriggerorder kullanılarak belirtilebilir.Tek bir ilk ve tek bir tablo üzerinde tetikleyici belirtilen sonra son.Varsa diğer AFTER tetikleyicisi aynı tablo, rasgele yürütülür.
İlk veya son tetikleyici bir ALTER TRIGGER deyim değişir, değiştirilmiş tetikleyici ilk veya son özniteliği çıkarılır ve sp_settriggerorder kullanarak sipariş değeri sıfırlanması gerekir.
Bir AFTER tetikleyicisi yalnızca tetikleyici SQL deyim başarıyla yürüttü sonra yürütülür.Bu başarılı yürütme, tüm bilgi art arda sıralı eylemleri ve güncelleştirildi veya silindi nesneyle ilişkili sınırlama denetimi içerir.AFTER tetikleyicisi işlem tetikleyici deyim ve ayrıca tüm bilgi basamaklı etkilerini tetikleyici beyannamenin nedeniyle güncelleştir ve Sil işlemleri denetler.
DELETE işlemi, bir alt ya da başvuru tablo bir CASCADE DELETE üst tarafından bulunan sonucunda tablo, ve bir DELETE üzerinde INSTEAD OF tetikleyicisi üzerinde alt tablo tetikleyici yoksayılır ve DELETE işlemi yürütülmeden.
DDL Triggers
DML tetikleyiciler, DDL Tetikleyiciler şemalara kapsamına eklenir değildir.İlgili DDL meta veriler sorgulama harekete geçirdiğinde, bu nedenle, OBJECT_ID, OBJECT_NAME, OBJECTPROPERTY ve OBJECTPROPERTY(EX) kullanılamaz.Katalog görünümlerini kullanın.Daha fazla bilgi için bkz:DDL Tetikleyicileri hakkında bilgi alma.
İzinler
DML tetikleyici değiştirmek için üzerinde ALTER iznine gerektiren tablo veya tetikleyici tanımlandığı görüntüleyin.
Bir DDL değiştirmek için (tüm sunucu ON) sunucu kapsam ile tanımlanan tetikleyici veya oturum açma tetikleyici CONTROL SERVER Sunucu izni gerektirir.Bir DDL değiştirmek için ALTER ANY DATABASE DDL tetikleyicisi izni geçerli veritabanında veritabanı (DATABASE ON) kapsam ile tanımlanan tetikleyicisi gerektirir.
Örnekler
Aşağıdaki örnek, bir kullanıcı eklemek veya verileri değiştirmek çalıştığında, istemci kullanıcı tanımlı bir ileti yazdırır DML tetikleyicisi oluştururSalesPersonQuotaHistoryTablo.Tetikleyici sonra kullanılarak değiştirilmişALTER TRIGGERyalnızca tetikleyici uygulamakINSERTFaaliyetler.Güncelleştirmeleri veya satır da bildirmek için bu tabloya ekler kullanıcı anımsatır, çünkü bu tetikleyici yararlıdırCompensationbölüm.
See Also