Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Pętla wyzwalacza SQL Server

Nie polecam jawnego wyłączania wyzwalacza podczas przetwarzania — może to powodować dziwne skutki uboczne.

Najbardziej niezawodnym sposobem wykrywania (i zapobiegania) cyklom w wyzwalaczu jest użycie CONTEXT_INFO() .

Przykład:

CREATE TRIGGER tr_Table1_Update
ON Table1
FOR UPDATE AS

DECLARE @ctx VARBINARY(128) 
SELECT @ctx = CONTEXT_INFO() 
IF @ctx = 0xFF
    RETURN

SET @ctx = 0xFF

-- Trigger logic goes here

Zobacz ten link dla bardziej szczegółowego przykładu.

Uwaga na temat CONTEXT_INFO() w SQL Server 2000:

Informacje kontekstowe są obsługiwane, ale najwyraźniej CONTEXT_INFO funkcja nie jest. Musisz użyć tego zamiast:

SELECT @ctx = context_info
FROM master.dbo.sysprocesses
WHERE spid = @@SPID


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ile razy dany znak pojawia się w ciągu znaków

  2. Jak działa funkcja LEFT() w programie SQL Server (T-SQL)

  3. Pusta instrukcja w T-SQL

  4. Zmień tryb podejrzany bazy danych SQL na tryb normalny za pomocą zapytania

  5. Przykłady konwersji „daty” na „przesunięcie daty” w SQL Server (T-SQL)