Udostępnij za pośrednictwem


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.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

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)

Zobacz także

Odwołanie