TRIGGER_NESTLEVEL (Transact-sql)

Tetikleyiciler tetikleyici harekete deyimi için verir. TRIGGER_NESTLEVEL dml ve ddl Tetikleyiciler geçerli iç içe geçmiş düzeyini belirlemek için kullanılır.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

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

Bağımsız değişkenler

  • object_id
    Tetikleyici nesne kimliğidir. Eğer object_idbelirtilirse, belirtilen tetikleyici yürütülen deyimi döndürülen için sayısı. Eğer object_idbelirtilmemiş, tüm Tetikleyiciler için deyimi döndürülen idam sayısı.

  • 'trigger_type'
    TRIGGER_NESTLEVEL için veya sonra Tetikleyiciler ıNSTEAD OF Tetikleyiciler uygulamak belirtir. Belirtmek sonra sonra için tetikler. Belirtmek IOT INSTEAD of Tetikleyiciler. Eğer trigger_typebelirtilen trigger_event_categoryde belirtilmelidir.

  • 'trigger_event_category'
    TRIGGER_NESTLEVEL dml veya ddl Tetikleyiciler uygulamak belirtir. Belirtmek dml dml Tetikleyiciler. Belirtmek dml dml Tetikleyiciler. Eğer trigger_event_categorybelirtilen trigger_typede belirtilmelidir. Not yalnızca sonra ile belirtilen ddl, çünkü ddl Tetikleyiciler yalnızca Tetikleyiciler sonra olabilir.

Açıklamalar

Hiçbir parametre belirtilmediğinde, TRIGGER_NESTLEVEL çağrı yığını üzerinde Tetikleyiciler toplam sayısını verir. Bu, kendisini içerir. Tetikleyici ateş başka bir tetikleyici neden komutları yürütür veya Tetikleyiciler ateş bir arkaya oluşturur ihmal parametreleri oluşabilir.

Belli tetikleyici türü ve olay kategorisi için çağrı yığını üzerinde Tetikleyiciler sayısı dönmek için belirtmek object_id= 0.

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

Parametreleri açıkça boş olarak belirtildiğinde null değeri olup TRIGGER_NESTLEVEL içinde kullanılan bakılmaksızın döndürülen ya da harici bir tetikleyici.

Örnekler

A.Belirli dml tetikleyici seviyesini test

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

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

B.Belirli dml tetikleyici seviyesini test

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)

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 seviyesini test

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

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

Ayrıca bkz.

Başvuru

CREATE TRIGGER (Transact-SQL)