UPPDATERING - Triggerfunktioner (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Returnerar ett boolesk värde som anger om ett INSERT- eller UPDATE-försök gjordes på en specificerad kolumn i en tabell eller vy. UPDATE() används var som helst inne i kroppen på en Transact-SQL INSERT- eller UPDATE-trigger för att testa om triggern ska utföra vissa handlingar.

Transact-SQL syntaxkonventioner

Syntax

UPDATE ( column )   

Arguments

kolumn
Är namnet på kolumnen att testa för antingen en INSERT- eller UPDATE-åtgärd. Eftersom tabellnamnet anges i ON-klausulen i triggern, inkludera inte tabellnamnet före kolumnnamnet. Kolumnen kan vara av vilken datatyp som helst som stöds av SQL Server. Dock kan beräknade kolumner inte användas i detta sammanhang.

Returtyper

Boolean

Anmärkningar

UPDATE() returnerar TRUE oavsett om ett INSERT- eller UPDATE-försök lyckas.

För att testa för en INSERT- eller UPDATE-åtgärd för mer än en kolumn, ange en separat UPDATE(kolumn)-klausul efter den första. Flera kolumner kan också testas för INSERT- eller UPDATE-åtgärder genom att använda COLUMNS_UPDATED. Detta returnerar ett bitmönster som visar vilka kolumner som har infogats eller uppdaterats.

IF UPDATE returnerar värdet TRUE i INSERT-handlingar eftersom kolumnerna antingen har explicita värden eller implicita (NULL) värden insatta.

Anmärkning

IF UPDATE(kolumn)-klausulen fungerar på samma sätt som en IF, IF... ELSE, eller WHILE-klausulen och kan använda BEGIN... SLUTBLOCK. För mer information, se Control-of-Flow Language (Transact-SQL).

UPDATE(kolumn) kan användas var som helst inne i kroppen på en Transact-SQL-trigger.

Om en trigger gäller för en kolumn UPDATED kommer värdet att returnera som true eller 1, även om kolumnvärdet förblir oförändrat. Detta är avsiktligt och utlösaren bör implementera affärslogik som avgör om åtgärden insert/update/delete är tillåten eller inte.

Examples

Följande exempel skapar en trigger som skriver ut ett meddelande till klienten när någon försöker uppdatera StateProvinceID eller PostalCode kolumnerna i tabellen Address .

USE AdventureWorks2022;  
GO  
IF EXISTS (SELECT name FROM sys.objects  
      WHERE name = 'reminder' AND type = 'TR')  
   DROP TRIGGER Person.reminder;  
GO  
CREATE TRIGGER reminder  
ON Person.Address  
AFTER UPDATE   
AS   
IF ( UPDATE (StateProvinceID) OR UPDATE (PostalCode) )  
BEGIN  
RAISERROR (50009, 16, 10)  
END;  
GO  
-- Test the trigger.  
UPDATE Person.Address  
SET PostalCode = 99999  
WHERE PostalCode = '12345';  
GO  

Se även

COLUMNS_UPDATED (Transact-SQL)
SKAPA UTLÖSARE (Transact-SQL)