Aracılığıyla paylaş


TRIGGER_NESTLEVEL (Transact-SQL)

Tetikleyiciler, tetikleyici harekete deyim için verir.TRIGGER_NESTLEVEL DML ve DDL Tetikleyicileri içinde iç içe geçme düzey geçerli belirlemek için kullanılır.

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

Sözdizimi

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

Bağımsız değişkenler

  • object_id
    Tetikleyici nesne kimliğidir.object_id Belirtilirse, belirtilen tetikleyici yürütülen deyim döndürülen için sayısı.object_id Belirtilmezse, tüm tetikleyiciler yürütülen deyim döndürülen için sayısı.

  • 'trigger_type'
    TRIGGER_NESTLEVEL için veya Tetikleyiciler INSTEAD OF Tetikleyiciler sonra uygulamak etkinleştirilip etkinleştirilmeyeceğini belirtir.Belirtmek sonra after için tetikler.Belirtmek IOT için INSTEAD of tetikleyicileri.trigger_type Belirlendiğinde, trigger_event_category de belirtilmelidir.

  • 'trigger_event_category'
    TRIGGER_NESTLEVEL DML veya DDL Tetikleyiciler uygulamak etkinleştirilip etkinleştirilmeyeceğini belirtir.Belirtmek DML DML tetikleyici.Belirtmek DDL DDL tetikleyici.trigger_event_category Belirlendiğinde, trigger_type de belirtilmelidir.Not yalnızca sonra ile belirtilen DDL, DDL Tetikleyiciler sonra Tetikleyiciler yalnızca olabilir çünkü.

Açıklamalar

Parametre belirtilmezse, TRIGGER_NESTLEVEL çağrı yığını üzerinde Tetikleyiciler toplam sayısını verir.Bu, kendisini içerir.Tetikleyici ateşlenmesine neden olan başka bir tetikleyici komutları yürütür veya Tetikleyiciler tetikleme, bir art arda oluşturur parametreleri edilebilse oluşabilir.

Belirli bir tetikleyici türü ve olay kategorisi için çağrı yığını üzerinde Tetikleyiciler toplam sayısını döndürmek için object_id = 0.

TRIGGER_NESTLEVEL dışında bir tetikleyici yürütülür ve herhangi bir parametre null olmayan 0 döndürür.

Parametreleri açıkça null belirtildiğinde, bir null olup TRIGGER_NESTLEVEL içinde kullanılan bakılmaksızın döndürülen veya tetikleyici dış değeridir.

Örnekler

A.Belirli DML tetikleyici iç içe geçmiş 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.Belirli DDL tetikleyici iç içe geçmiş 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.Tüm tetikleyiciler yürütülen iç içe geçmiş düzey sınama

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

Ayrıca bkz.

Başvuru