TRIGGER_NESTLEVEL (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Mengembalikan jumlah pemicu yang dijalankan untuk pernyataan yang mengaktifkan pemicu. TRIGGER_NESTLEVEL digunakan dalam pemicu DML dan DDL untuk menentukan tingkat bersarang saat ini.

Konvensi sintaks transact-SQL

Sintaksis

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

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

object_id
Adalah ID objek pemicu. Jika object_id ditentukan, berapa kali pemicu yang ditentukan telah dijalankan untuk pernyataan dikembalikan. Jika object_id tidak ditentukan, berapa kali semua pemicu telah dijalankan untuk pernyataan dikembalikan.

'trigger_type'
Menentukan apakah akan menerapkan TRIGGER_NESTLEVEL ke pemicu AFTER atau BUKAN pemicu. Tentukan AFTER untuk pemicu AFTER. Tentukan IOT untuk ALIH-ALIH pemicu. Jika trigger_type ditentukan, trigger_event_category juga harus ditentukan.

'trigger_event_category'
Menentukan apakah akan menerapkan TRIGGER_NESTLEVEL ke pemicu DML atau DDL. Tentukan DML untuk pemicu DML. Tentukan DDL untuk pemicu DDL. Jika trigger_event_category ditentukan, trigger_type juga harus ditentukan. Perhatikan bahwa hanya AFTER yang dapat ditentukan dengan DDL, karena pemicu DDL hanya dapat menjadi pemicu AFTER.

Keterangan

Ketika tidak ada parameter yang ditentukan, TRIGGER_NESTLEVEL mengembalikan jumlah total pemicu pada tumpukan panggilan. Ini termasuk dirinya sendiri. Kelalaian parameter dapat terjadi ketika pemicu menjalankan perintah yang menyebabkan pemicu lain diaktifkan atau membuat suksesi pemicu tembakan.

Untuk mengembalikan jumlah total pemicu pada tumpukan panggilan untuk jenis pemicu dan kategori peristiwa tertentu, tentukan object_id = 0.

TRIGGER_NESTLEVEL mengembalikan 0 jika dijalankan di luar pemicu dan parameter apa pun tidak NULL.

Ketika parameter apa pun secara eksplisit ditentukan sebagai NULL, nilai NULL dikembalikan terlepas dari apakah TRIGGER_NESTLEVEL digunakan di dalam atau di luar pemicu.

Contoh

J. Menguji tingkat berlapis pemicu DML tertentu

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

B. Menguji tingkat berlapis pemicu DDL tertentu

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. Menguji tingkat berlapis dari semua pemicu yang dijalankan

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

Lihat Juga

BUAT PEMICU (Transact-SQL)