Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft 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)