Share via


TRIGGER_NESTLEVEL (Transact-SQL)

Tetikleyiciler, tetikleyici harekete deyimin yürütülmesi sayısını verir.TRIGGER_NESTLEVEL DML ve DDL Tetikleyicileri geçerli iç içe geçme düzey belirlemek için kullanılır.

Topic link iconTransact-SQL sözdizimi kuralları

TRIGGER_NESTLEVEL ( [ object_id ] , [ 'trigger_type' ] , [ 'trigger_event_category' ] )

Bağımsız değişkenler

  • object_id
    Nesne bir tetikleyici kimliğidir.If object_id Belirtilen deyim döndürdü için belirlenen tetikleyici çalıştırıldı sayısı. If object_id Belirtilen değil, tüm Tetikleyicileri deyim döndürdü için yürütülen sayısı.

  • 'trigger_type'
    TRIGGER_NESTLEVEL için Tetikleyicileri SONRA ıNSTEAD OF tetikleri uygulanacağını belirtir.Belirtin Sonra için Tetikleyicileri SONRA.Belirtin iot için ıNSTEAD OF tetikleri.If trigger_type , belirtilen trigger_event_category de belirtilmelidir.

  • 'trigger_event_category'
    DML veya DDL tetikleyicilere TRIGGER_NESTLEVEL uygulama etkinleştirilip etkinleştirilmeyeceğini belirtir.Belirtin dml DML tetikleyici.Belirtin ddl DDL tetikleyici.If trigger_event_category , belirtilen trigger_type de belirtilmelidir. Yalnızca unutmayın Sonra ile belirtilebilir.ddl, DDL Tetikleyicileri Tetikleyicileri SONRA olabileceğinden.

Remarks

Parametre belirtildiğinde, TRIGGER_NESTLEVEL toplam Tetikleyicileri çağrı yığını verir.Bu, kendisini içerir.Bir tetiği harekete için başka bir tetikleyici neden komutları yürütür veya Tetikleyicileri tetikleme, bir arka arkaya oluşturur atlandığını parametrelerinin oluşabilir.

Tetikleyicileri toplam sayısı, belirli bir tetikleyici türü ve olay kategorisi için çağrı yığını geri dönmek için , belirtin. object_id = 0.

TRIGGER_NESTLEVEL dışında bir tetikleyici gerçekleştirildiğinde ve herhangi bir parametre NULL ise 0 değerini döndürür.

Parametrelerin açıkça BOş olarak belirtildiğinde, bir NULL döndürülen TRIGGER_NESTLEVEL içinde mi kullanılmış olsun ya da bir tetikleyici için dış değeridir.

Örnekler

C.Iç içe geçmiş özel DML tetikleyicisi düzey sınama

IF ( (SELECT TRIGGER_NESTLEVEL( OBJECT_ID('xyz') , 'AFTER' , 'DML' ) ) > 5 )
   RAISERROR('Trigger xyz nested more than 5 levels.',16,-1)

b.Iç içe geçmiş özel DDL tetikleyicisi düzey sınama

IF ( ( SELECT TRIGGER_NESTLEVEL ( ( SELECT object_id FROM sys.triggers
WHERE name = 'abc' ), 'AFTER' , 'DDL' ) ) > 5 )
   RAISERROR ('Trigger abc nested more than 5 levels.',16,-1)

c.Iç içe sınama düzey, yürütülen tüm Tetikleyicileri

IF ( (SELECT trigger_nestlevel() ) > 5 )
   RAISERROR
      ('This statement nested over 5 levels of triggers.',16,-1)

See Also

Reference