UPDATE() (Transact-SQL)
Restituisce un valore booleano che indica se sono stati effettuati tentativi di esecuzione dell'operazione INSERT o UPDATE su una colonna specifica di una tabella o vista. UPDATE() viene utilizzata in qualsiasi punto all'interno del corpo di un trigger Transact-SQL INSERT o UPDATE per controllare se il trigger deve eseguire operazioni specifiche.
Convenzioni della sintassi Transact-SQL
Sintassi
UPDATE ( column )
Argomenti
- column
Nome della colonna in cui verificare se viene eseguita un'operazione INSERT o UPDATE. Poiché il nome della tabella viene specificato nella clausola ON del trigger, non includere il nome della tabella prima del nome della colonna. Il tipo di dati della colonna può essere uno dei tipi supportati da SQL Server 2005. In questo contesto non è tuttavia possibile utilizzare colonne calcolate.
Tipi restituiti
Boolean
Osservazioni
UPDATE() restituisce TRUE indipendentemente dall'esito del tentativo di esecuzione dell'operazione INSERT o UPDATE.
Per eseguire la verifica dell'esecuzione di un'operazione INSERT o UPDATE in più colonne, specificare una clausola UPDATE(column) aggiuntiva per ogni colonna. In alternativa, è possibile eseguire la stessa verifica utilizzando COLUMNS_UPDATED. In questo caso viene restituito uno schema di bit che indica le colonne inserite o aggiornate.
In operazioni INSERT l'opzione IF UPDATE restituisce il valore TRUE in quanto nelle colonne vengono inseriti valori espliciti o impliciti (NULL).
[!NOTA] La clausola IF UPDATE (column) funziona esattamente come un'istruzione IF, IF...ELSE o WHILE e può utilizzare il blocco BEGIN...END. Per ulteriori informazioni, vedere Elementi del linguaggio per il controllo di flusso (Transact-SQL).
L'argomento UPDATE(column) può essere utilizzato in qualsiasi punto del corpo di un trigger Transact-SQL.
[!NOTA] In SQL Server 2000, UPDATE() non rileva le modifiche apportate alle colonne timestamp. Per questo tipo di colonne una clausola IF UPDATE() all'interno del corpo di un trigger restituisce FALSE indipendentemente dal fatto che le colonne siano state aggiornate. In SQL Server 2005 UPDATE() rileva le modifiche apportate alle colonne timestamp. Una clausola IF UPDATE() all'interno del corpo di un trigger DML restituisce TRUE se tali colonne vengono aggiornate.
Esempi
Nell'esempio seguente viene creato un trigger che stampa un messaggio nel client in corrispondenza di un tentativo di aggiornamento della la colonna StateProvinceID
o PostalCode
della tabella Address
.
USE AdventureWorks;
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
Vedere anche
Riferimento
COLUMNS_UPDATED (Transact-SQL)
CREATE TRIGGER (Transact-SQL)