TRIGGER_NESTLEVEL (Transact-SQL)
Zwraca liczbę wyzwalaczy do wykonania dla instrukcja opalanych wyzwalacza.TRIGGER_NESTLEVEL jest używany w DML i DDL wyzwalaczy do ustalenia bieżącego poziom zagnieżdżenia.
Składnia
TRIGGER_NESTLEVEL ( [ object_id ] , [ 'trigger_type' ] , [ 'trigger_event_category' ] )
Argumenty
object_id
Jest to identyfikator obiektu wyzwalacza.Jeśli object_id jest określony, ile razy określony wyzwalacz zostało wykonane dla instrukcja jest zwracany.Jeśli object_id nie jest określony, ile razy wszystkie wyzwalacze zostały wykonane dla instrukcja jest zwracany.'trigger_type'
Określa, czy zastosować TRIGGER_NESTLEVEL do po Wyzwalacze lub zamiast wyzwalaczy.Określ po dla po wyzwalaczy.Określ IOT wyzwalaczy INSTEAD OF.Jeśli trigger_type jest określony, trigger_event_category musi być także określona.'trigger_event_category'
Określa, czy dotyczą TRIGGER_NESTLEVEL DML lub DDL wyzwalaczy.Określ DML DML wyzwalaczy.Określ DDL wyzwalaczy DDL .Jeśli trigger_event_category jest określony, trigger_type musi być także określona.Uwaga tylko po można określić przy użyciu DDL, ponieważ Wyzwalacze DDL może być tylko po wyzwalaczy.
Uwagi
Jeśli nie określono żadnych parametrów, TRIGGER_NESTLEVEL zwraca całkowita liczba wyzwalaczy na stos wywołań.Obejmuje to samo.Pominięcie parametrów może wystąpić, jeśli wyzwalacz wykonuje polecenia powoduje innego wyzwalacz do opalania lub tworzy kolejne wyzwalania wyzwalaczy.
Całkowita liczba wyzwalaczy powrócić na stos wywołań dla kategorii typu i zdarzenie określonego wyzwalacza, należy określić object_id = 0.
TRIGGER_NESTLEVEL zwraca wartość 0, jeśli jest ono wykonane poza wyzwalaczem i wszystkie parametry są NIEZEROWE.
Kiedy wszystkie parametry są jawnie określone jako NULL, wartość NULL jest zwracane, niezależnie od tego, czy TRIGGER_NESTLEVEL został użyty w ciągu lub zewnętrznych wyzwalacza.
Przykłady
A.Testowanie zagnieżdżenia poziom określonego wyzwalacza DML
IF ( (SELECT TRIGGER_NESTLEVEL( OBJECT_ID('xyz') , 'AFTER' , 'DML' ) ) > 5 )
RAISERROR('Trigger xyz nested more than 5 levels.',16,-1)
B.Testowanie zagnieżdżenia poziom określonego wyzwalacza DDL
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.Testowanie zagnieżdżenia poziom wszystkie wyzwalacze wykonywane
IF ( (SELECT trigger_nestlevel() ) > 5 )
RAISERROR
('This statement nested over 5 levels of triggers.',16,-1)