Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL databáze v Microsoft Fabric
Vrátí počet spouštěčů vykonaných pro příkaz, který spouštěč spustil. TRIGGER_NESTLEVEL se používá v DML a DDL triggerech k určení aktuální úrovně vnoření.
Syntaxe
TRIGGER_NESTLEVEL ( [ object_id ] , [ 'trigger_type' ] , [ 'trigger_event_category' ] )
Arguments
object_id
Je ID objektu spouštěče. Pokud je object_id specifikováno, vrátí se počet provedení specifikovaného spouštěče pro daný příkaz. Pokud object_id není specifikováno, vrátí se počet spuštění všech spouštěčů pro daný příkaz.
'trigger_type'
Specifikuje, zda se TRIGGER_NESTLEVEL aplikovat na spouštěče AFTER nebo MÍSTO spouštěčů. Specifikujte AFTER pro spouštěče AFTER .
Specifikujte IOT pro spouštěče MÍSTO TOHO. Pokud je trigger_type specifikováno, musí být také trigger_event_category specifikováno.
'trigger_event_category'
Specifikuje, zda se TRIGGER_NESTLEVEL aplikovat na DML nebo DDL spouštěče. Specifikujte DML pro DML spouštěče. Specifikujte DDL pro DDL triggery. Pokud je trigger_event_category specifikováno, musí být také trigger_type specifikováno. Všimněte si, že pomocí DDL lze specifikovat pouze AFTER, protože DDL triggery mohou být pouze AFTER.
Poznámky
Pokud nejsou specifikovány žádné parametry, TRIGGER_NESTLEVEL vrátí celkový počet spouštěčů na zásobníku volání. To zahrnuje i sebe samotné. Vynechání parametrů může nastat, když spouštěč vykoná příkaz, který způsobí spuštění dalšího spouštěče, nebo vytvoří sérii spouštěčů.
Pro vrácení celkového počtu spouštěčů na zásobníku volání pro konkrétní typ spouštěče a kategorii události uveďte object_id = 0.
TRIGGER_NESTLEVEL vrátí 0, pokud je vykonán mimo spouštěč a žádné parametry nejsou NULL.
Když jsou jakékoliv parametry explicitně specifikovány jako NULL, vrátí se hodnota NULL bez ohledu na to, zda byl TRIGGER_NESTLEVEL použit uvnitř nebo vně spouštěče.
Examples
A. Testování úrovně vnoření konkrétního DML triggeru
IF ( (SELECT TRIGGER_NESTLEVEL( OBJECT_ID('xyz') , 'AFTER' , 'DML' ) ) > 5 )
RAISERROR('Trigger xyz nested more than 5 levels.',16,-1)
B. Testování úrovně vnoření konkrétního DDL triggeru
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. Testování úrovně vnoření všech spouštěčů
IF ( (SELECT trigger_nestlevel() ) > 5 )
RAISERROR
('This statement nested over 5 levels of triggers.',16,-1)