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.

Icona di collegamento a un argomentoConvenzioni 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. 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 2008 e 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