UPDATE() (Transact-SQL)
Retourne une valeur booléenne qui indique si une tentative d'opération INSERT ou UPDATE a été réalisée sur une colonne spécifiée d'une table ou d'une vue. UPDATE() est utilisé à n'importe quel endroit du corps d'un déclencheur INSERT ou UPDATE Transact-SQL pour tester si celui-ci doit exécuter certaines actions.
Syntaxe
UPDATE ( column )
Arguments
- column
Nom de la colonne à tester pour une action INSERT ou UPDATE. Étant donné que le nom de la table est spécifié dans la clause ON du déclencheur, n'incluez pas ce nom avant le nom de la colonne. La colonne peut être de n'importe quel type de données pris en charge par SQL Server. Toutefois, les colonnes calculées ne peuvent pas être utilisées dans ce contexte.
Types de retour
Booléen
Notes
UPDATE() retourne TRUE quelle que soit l'issue d'une tentative d'opération INSERT ou UPDATE.
Afin de tester une action INSERT ou UPDATE pour plusieurs colonnes, spécifiez une clause séparée UPDATE(column) après la première colonne. Plusieurs colonnes peuvent également être testées pour des actions INSERT ou UPDATE à l'aide de COLUMNS_UPDATED. Celui-ci retourne un modèle binaire qui indique quelles colonnes ont été insérées ou mises à jour.
IF UPDATE retourne la valeur TRUE dans les actions INSERT car des valeurs explicites ou implicites (NULL) sont insérées dans les colonnes.
Notes
La clause IF UPDATE(colum) fonctionne de la même manière qu'une clause IF, IF...ELSE ou WHILE et peut utiliser le bloc BEGIN...END. Pour plus d'informations, consultez Langage de contrôle de flux (Transact-SQL).
UPDATE(column) peut être utilisé dans n'importe quel endroit du corps d'un déclencheur Transact-SQL.
Notes
Dans SQL Server 2000, UPDATE() ne détecte pas les modifications apportées aux colonnes timestamp. Pour ces colonnes, qu'elles soient ou non mises à jour, une clause IF UPDATE() dans le corps d'un déclencheur retourne FALSE. Dans SQL Server 2008 et SQL Server 2005, UPDATE() détecte les modifications apportées aux colonnes timestamp. Si ces colonnes sont mises à jour, une clause IF UPDATE() dans le corps d'un déclencheur DML retourne TRUE.
Exemple
L'exemple suivant crée un déclencheur qui envoie un message au client lorsqu'une personne essaie de mettre à jour les colonnes StateProvinceID ou PostalCode de la table Address.
USE AdventureWorks2008R2;
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