sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server Trigger loop

Jag rekommenderar inte att du uttryckligen inaktiverar utlösaren under bearbetningen - detta kan orsaka konstiga biverkningar.

Det mest tillförlitliga sättet att upptäcka (och förhindra) cykler i en trigger är att använda CONTEXT_INFO() .

Exempel:

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

Se denna länk för ett mer detaljerat exempel.

Anmärkning om CONTEXT_INFO() i SQL Server 2000:

Kontextinformation stöds men tydligen CONTEXT_INFO funktionen är det inte. Du måste använda detta istället:

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


  1. Översätta Salesforce-data till EDI-format

  2. proxysql-admin Alternativ - ClusterControl ProxySQL GUI

  3. Hur kan jag mappa ett Java-datum till DATETIME i mysql (som standard dess TIMESTAMP) med Hibernate-kommentarer

  4. (behöver råd) Prata med MySQL-serverdatabasen från min Android-app