Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
Visszaadja a ravaszok számát, amely a ravaszt elindította. TRIGGER_NESTLEVEL a DML és DDL triggerekben használják a jelenlegi fészkelődési szint meghatározására.
Transact-SQL szintaxis konvenciók
Szemantika
TRIGGER_NESTLEVEL ( [ object_id ] , [ 'trigger_type' ] , [ 'trigger_event_category' ] )
Arguments
object_id
A trigger objektumazonosítója. Ha object_id meg van jelölve, visszakerül, hányszor hajtották végre a megadott triggert az utasításhoz. Ha object_id nincs megadva, visszakerül, hányszor hajtották végre az utasításhoz tartozó triggereket.
'trigger_type'
Megadja, hogy a TRIGGER_NESTLEVEL-t alkalmazzuk-e AFTER triggerekre, vagy HELYETTE a triggerekre.
Megadd az AFTER triggereket az AFTER triggerekhez. Megadd az IOT-t a INSTEAD triggerek számára. Ha trigger_type meg van jelölve, trigger_event_category is meg kell határozni.
'trigger_event_category'
Megadja, hogy alkalmazzuk-e TRIGGER_NESTLEVEL-t DML vagy DDL triggerekre.
Megadd a DML-t a DML triggerekhez.
Megadja a DDL-t a DDL triggerekhez. Ha trigger_event_category meg van jelölve, akkor trigger_type is meg kell határozni. Fontos megjegyezni, hogy a DDL csak AFTER lehet megadni, mert a DDL triggerek csak AFTER triggerek lehetnek.
Megjegyzések
Ha nincs paraméter, TRIGGER_NESTLEVEL visszaadja a hívás stack összes triggerszámát. Ez magában is magában foglal. Paraméterek kihagyása előfordulhat, amikor egy ravasz végrehajtja a parancsokat, ami egy másik ravaszt indít, vagy sorozatot hoz létre a kilőtő ravaszok sorozatában.
Ahhoz, hogy visszaadjuk a hívás stack összes triggerszámát egy adott triggertípusra és eseménykategóriára, megadjuk object_id = 0-t.
TRIGGER_NESTLEVEL 0-ot ad vissza, ha a triggeren kívül hajtják végre, és bármilyen paraméter nem NULL.
Ha bármely paramétert kifejezetten NULL-ként jelölnek meg, akkor a NULL értéket visszakapják, függetlenül attól, hogy TRIGGER_NESTLEVEL használták-e a trigger belső vagy külső részén.
Példák
A. Egy adott DML trigger fészkelési szintjének tesztelése
IF ( (SELECT TRIGGER_NESTLEVEL( OBJECT_ID('xyz') , 'AFTER' , 'DML' ) ) > 5 )
RAISERROR('Trigger xyz nested more than 5 levels.',16,-1)
B. Egy adott DDL trigger fészkelési szintjének tesztelése
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. Az összes végrehajtott trigger fészkelési szintjének tesztelése
IF ( (SELECT trigger_nestlevel() ) > 5 )
RAISERROR
('This statement nested over 5 levels of triggers.',16,-1)