Delen via


UPDATE - Triggerfuncties (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Geeft een Booleaanse waarde terug die aangeeft of er een INSERT- of UPDATE-poging is gedaan op een gespecificeerde kolom van een tabel of weergave. UPDATE() wordt overal in het lichaam van een Transact-SQL INSERT- of UPDATE-trigger gebruikt om te testen of de trigger bepaalde acties moet uitvoeren.

Transact-SQL syntaxis-conventies

Syntaxis

UPDATE ( column )   

Arguments

kolom
Is de naam van de kolom die getest moet worden voor een INSERT- of UPDATE-actie. Omdat de tabelnaam is gespecificeerd in de ON-clausule van de trigger, moet de tabelnaam niet vóór de kolomnaam worden opgenomen. De kolom kan van elk datatype zijn dat door SQL Server wordt ondersteund. Echter, berekende kolommen kunnen in deze context niet worden gebruikt.

Retourtypen

Booleaan

Opmerkingen

UPDATE() geeft TRUE terug, ongeacht of een INSERT- of UPDATE-poging succesvol is.

Om te testen op een INSERT- of UPDATE-actie voor meer dan één kolom, specificeer je een aparte UPDATE(column)-clausule na de eerste. Meerdere kolommen kunnen ook worden getest op INSERT- of UPDATE-acties door gebruik te maken van COLUMNS_UPDATED. Dit geeft een bitpatroon terug dat aangeeft welke kolommen zijn ingevoegd of bijgewerkt.

IF UPDATE geeft de TRUE-waarde terug in INSERT-acties omdat de kolommen expliciete waarden of impliciete (NULL) waarden hebben ingevoegd.

Opmerking

De IF UPDATE(column)-clausule werkt hetzelfde als een IF, IF... ELSE, of WHILE-clausule en kan de BEGIN... EINDE blok. Voor meer informatie, zie Control-of-Flow Language (Transact-SQL).

UPDATE(kolom) kan overal in het lichaam van een Transact-SQL trigger worden gebruikt.

Als een trigger op een kolom van toepassing is, zal de UPDATED waarde terugkeren als true of 1, zelfs als de kolomwaarde ongewijzigd blijft. Dit is standaard en de trigger moet bedrijfslogica implementeren die bepaalt of de invoeg-/update-/verwijderbewerking is toegestaan of niet.

Voorbeelden

Het volgende voorbeeld creëert een trigger die een bericht naar de client afdrukt wanneer iemand probeert de StateProvinceID of PostalCode kolommen van de Address tabel bij te werken.

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  

Zie ook

COLUMNS_UPDATED (Transact-SQL)
MAAK TRIGGER (Transact-SQL)