sql >> Database >  >> RDS >> Sqlserver

SQL Server-triggerlus

Ik raad niet aan om de trigger expliciet uit te schakelen tijdens de verwerking - dit kan vreemde bijwerkingen veroorzaken.

De meest betrouwbare manier om cycli in een trigger te detecteren (en te voorkomen) is door CONTEXT_INFO() te gebruiken .

Voorbeeld:

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

Zie deze link voor een meer gedetailleerd voorbeeld.

Opmerking over CONTEXT_INFO() in SQL Server 2000:

Contextinformatie wordt ondersteund, maar blijkbaar is de CONTEXT_INFO functie niet. Je moet dit in plaats daarvan gebruiken:

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


  1. Tekenreeksaaneenschakelingsoperator in Oracle, Postgres en SQL Server

  2. Belangrijkste functies om naar te zoeken in een SQL Server Monitoring Tool

  3. ADDDATE() Voorbeelden – MySQL

  4. Basistafel of weergave niet gevonden:1146 Tafel Laravel 5