Aracılığıyla paylaş


TRIGGER_NESTLEVEL (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Tetikleyiciyi ateşleyen ifadenin çalıştırılan tetik sayısını döndürür. TRIGGER_NESTLEVEL, DML ve DDL tetikleyicilerinde mevcut yuva seviyesini belirlemek için kullanılır.

Transact-SQL söz dizimi kuralları

Sözdizimi

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

Arguments

object_id
Bir tetikleyicinin nesne kimliğidir. Eğer object_id belirtilirse, belirtilen tetikleyicinin kaç kez çalıştırıldığı döner. Eğer object_id belirtilmemişse, ilanı için tüm tetikleyicilerin kaç kez çalıştırıldığı geri döner.

'trigger_type'
TRIGGER_NESTLEVEL'nin AFTER tetikleyicilere mi yoksa OF tetikleyicilere mi uygulanacağını belirtir. AFTER tetikleyicileri için AFTER belirtin. Tetikleyiciler yerine IOT belirtin. Eğer trigger_type belirtilmişse, trigger_event_category de belirtilmelidir.

'trigger_event_category'
DML veya DDL tetikleyicilerine TRIGGER_NESTLEVEL uygulanıp uygulanmadığını belirtir. DML tetikleyicileri için DML belirtin. DDL tetikleyicileri için DDL belirtin. Eğer trigger_event_category belirtilmişse, trigger_type de belirtilmelidir. DDL ile yalnızca AFTER (SONRA) belirtilebilir, çünkü DDL tetikleyicileri sadece AFTER tetikleyici olabilir.

Açıklamalar

Hiçbir parametre belirtilmediğinde, TRIGGER_NESTLEVEL çağrı yığınındaki toplam tetikleyici sayısını döndürür. Bu durum kendisini kapsar. Bir tetik komutları çalıştırdığında başka bir tetik ateşlendiğinde veya ardışık ateşleme tetikleri yarattığında parametrelerin atılması meydana gelebilir.

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

TRIGGER_NESTLEVEL, tetikleyici dışında çalıştırılırsa ve herhangi bir parametre NULL değilse 0 döndürür.

Herhangi bir parametre açıkça NULL olarak belirtildiğinde, tetikleyici içinde veya dışında kullanılıp kullanılmadığına bakılmaksızın TRIGGER_NESTLEVEL NULL değeri döner.

Örnekler

A. Belirli bir DML tetikleyicisinin iç içe geçme seviyesini test etmek

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

B. Belirli bir DDL tetikleyicisinin iç içe seviyesini test etmek

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. Çalıştırılan tüm tetikleyicilerin iç içe geçme seviyesini test etmek

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

Ayrıca Bkz.

TETİKLEYİCİ OLUŞTUR (Transact-SQL)