sp_settriggerorder (Transact-SQL)

İlk veya son fired after tetikleyicilerini belirtir.Arasında ilk ve son tetikleyici harekete sonra Tetikleyiciler tanımsız sırayla çalıştırılır.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

sp_settriggerorder [ @triggername = ] '[ triggerschema. ] triggername' 
    , [ @order = ] 'value' 
    , [ @stmttype = ] 'statement_type' 
    [ , [ @namespace = ] { 'DATABASE' | 'SERVER' | NULL } ]

Bağımsız değişkenler

  • [ @triggername= ' triggerschema**.** triggername**'**
    Tetikleyici ve şema adı, varsa, sırasını küme yapılması veya değiştirilen ait olduğu için.[triggerschema**.**]triggername is sysname.Bir tetikleyici adı eşleşmezse veya bir INSTEAD of tetikleyicisi adı karşılık geliyorsa, yordamı bir hata döndürür.triggerschemaDDL veya oturum açma tetikleyici belirtilemez.

  • [ @order= ] 'value'
    Yeni Tetikleyici sırasını ayardır.valueİş varchar(10) ve herhangi biri olabiliraşağıdaki değerleri.

    Önemli notÖnemli

    İlk ve Son tetikleyiciler, iki farklı Tetikleyiciler olmalıdır.

    Değer

    Açıklama

    First

    Tetikleyici önce harekete geçirilir.

    Last

    Son tetikleyici harekete geçirilir.

    Hiçbiri

    Tanımsız sırayla tetikleyici harekete geçirilir.

  • [ @stmttype= ] 'statement_type'
    Tetiği harekete SQL deyim belirtir.statement_typeİş varchar(50) ve INSERT, update, delete, oturum açma veya herhangi olabilir Transact-SQL deyim olay içinde listeleniyor ddl olayları.Olay grupları belirtilemez.

    Tetikleyici olarak belirlenebilir ilk veya Son tetikleyicisi deyim türü için bir tetikleyici olarak yalnızca tanımlandıktan sonra bir deyim türü için tetikleyici.Örneğin, tetikleyici TR1 belirlenebilir ilk tabloINSERT için T1 , TR1 INSERT tetikleyici olarak tanımlanır. Veritabanı Altyapısı , Bir hata döndürür TR1, yalnızca bir INSERT tetikleyicisi, tanımlanmış olan olarak küme bir ilk, veya Son, tetikleyici bir update deyimiçin.Daha fazla bilgi için açıklamalar bölümüne bakın.

  • @ ad= { 'database' | 'Sunucu' | NULL}
    Zaman triggername DDL tetikleyici ise, belirtir olup olmadığını triggername veritabanı kapsam veya sunucu kapsamile oluşturulan.triggername Bir oturum açma Tetik sunucusu belirtilmelidir.DDL tetikleyici kapsamhakkında daha fazla bilgi için bkz: ddl Tetikleyicileri tasarlama.Belirtilmezse veya null belirtilirse, triggername bir DML tetikleyici.

Dönüş Kodu Değerleri

0 (başarılı) ve 1 (hata)

Açıklamalar

DML Tetikleyicileri

Olabilir sadece bir ilk bir Son tetikleyici her deyim tek bir tabloiçin.

Yoksa bir ilk Tetikleyici zaten tanımlı tablo, veritabanı veya sunucu üzerinde yeni bir tetikleyici olarak belirleyemez ilk aynı tablo, veritabanı veya sunucu için aynı statement_type.Bu sınırlama da geçerlidir Son tetikler.

Çoğaltma ilk tetikleyici bir Anında güncelleştirmede bulunan veya kuyruğa alınmış güncelleştirme abonelikherhangi bir tablo için otomatik olarak oluşturur.Çoğaltma, tetikleyici ilk tetikleyici gerektirir.Çoğaltma ilk tetikleyici içeren bir tablo bir anında güncelleme veya kuyruğa alınmış güncelleştirme abonelikçalıştığınızda bir hata yükseltir.Bir tablo için dahil abonelikiçinde sonra tetikleyici ilk tetikleyici yapmaya çalışırsanız, sp_settriggerorder bir hata döndürür.alter tetikleyici üzerinde çoğaltma tetikleyicisi veya kullanın, sp_settriggerorder çoğaltma tetikleyicisini değiştirmek için bir Son veya yok tetikleyici, abonelik işlev doğru olmaz.

DDL Tetikleyicileri

DDL tetikleyici kapsam veritabanı ve sunucu kapsam DDL tetikleyici aynı olayvarsa, her iki Tetikleyiciler olmasını belirtebilirsiniz bir ilk tetikleyici veya bir Son tetikleyici.Ancak, sunucu kapsamı Tetikleyiciler önce her zaman yangın.Genel olarak, aynı olay var DDL Tetikleyiciler yürütme sırası şöyledir:

  1. Server -düzey tetikleyici işaretlenmiş ilk.

  2. Diğer sunucudüzey Tetikleyiciler.

  3. Server -düzey tetikleyici işaretlenmiş Son.

  4. Veritabanı -düzey tetikleyici işaretlenmiş ilk.

  5. Diğer veritabanıdüzey Tetikleyiciler.

  6. Veritabanı -düzey tetikleyici işaretlenmiş Son.

Genel tetikleyici hakkında önemli noktalar

Bir tetikleyici alter deyim ilk veya son tetikleyici değişirse ilk veya Son ile küme tetikleyici bırakılanöznitelik başlangıçta ve değeri değiştirilir yok. Sipariş değeri kullanarak sıfırlanması sp_settriggerorder.

Aynı tetikleyici ilk veya son sipariş için birden fazla deyim türü olarak belirlenmesi gerekir, sp_settriggerorder her deyim türü için yürütülmelidir.Olarak belirlenebilir önce Ayrıca, tetikleyici ilk deyim türü için tanımlanmış olmalıdır ilk veya Son bu deyim türünde yangın Tetik.

İzinler

(Tüm sunucu üzerinde oluşturulan) sunucu kapsam DDL tetikleyici veya oturum açma tetikleyici sırasını küme için control server izni gerektirir.

Veritabanı kapsam (on database oluşturulan) bir DDL tetikleyici sırasını küme için alter any database DDL tetikleyici izni gerektirir.

DML tetikleyici sırasını küme için tablo veya Görünüm tetikleyici tanımlanmış alter izni gerektirir.

Örnekler

A.DML tetikleyici Açmadığınızda sırasını ayarlama

Aşağıdaki örnek, tetikleyici belirtir uSalesOrderHeader ilk tetiğin ateşlenmesine sonra olması bir UPDATE işlem yapıldığına Sales.SalesOrderHeader tablo.

USE AdventureWorks2008R2;
GO
sp_settriggerorder @triggername= 'Sales.uSalesOrderHeader', @order='First', @stmttype = 'UPDATE';

B.DDL tetikleyici Açmadığınızda sırasını ayarlama

Aşağıdaki örnek, tetikleyici belirtir ddlDatabaseTriggerLog ilk tetiğin ateşlenmesine sonra olması bir ALTER_TABLE olay oluşur AdventureWorks2008R2 veritabanı.

USE AdventureWorks2008R2;
GO
sp_settriggerorder @triggername= 'ddlDatabaseTriggerLog', @order='First', @stmttype = 'ALTER_TABLE', @namespace = 'DATABASE';