UPDATE() (Transact-SQL)

Devuelve un valor booleano que indica si se intentó utilizar INSERT o UPDATE en una columna especificada de una tabla o vista. UPDATE() se utiliza en cualquier lugar del cuerpo de un desencadenador INSERT o UPDATE de Transact-SQL para probar si el desencadenador debe ejecutar ciertas acciones.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL


UPDATE ( column ) 

column

Es el nombre de la columna que se va a probar para una acción INSERT o UPDATE. Debido a que el nombre de la tabla se especifica en la cláusula ON del desencadenador, no lo incluya antes del nombre de la columna. Esta columna puede ser de cualquier tipo de datos admitido por SQL Server 2005. No obstante, no se pueden utilizar columnas calculadas en este contexto.

UPDATE() devuelve TRUE independientemente de si un intento de INSERT o UPDATE tiene éxito.

Para probar una acción INSERT o UPDATE para más de una columna, especifique una cláusula UPDATE(column) distinta a continuación de la primera. También puede probar acciones INSERT o UPDATE en varias columnas con COLUMNS_UPDATED, que devuelve un patrón de bits que indica las columnas que se insertaron o se actualizaron.

IF UPDATE devuelve el valor TRUE en las acciones INSERT porque en las columnas se insertaron valores explícitos o implícitos (NULL).

ms187326.note(es-es,SQL.90).gifNota:
La cláusula IF UPDATE(column) funciona de forma idéntica a una instrucción IF, IF…ELSE o WHILE, y puede utilizar el bloque BEGIN…END. Para obtener más información, vea Lenguaje de control de flujo (Transact-SQL).

UPDATE(column) puede utilizarse en cualquier lugar del cuerpo de un desencadenador Transact-SQL.

ms187326.note(es-es,SQL.90).gifNota:
En SQL Server 2000, UPDATE() no detecta cambios en las columnas timestamp. Para estas columnas, una cláusula IF UPDATE() en el cuerpo de un desencadenador devuelve FALSE, independientemente de si se actualizaron las columnas. En SQL Server 2005, UPDATE() detecta cambios en las columnas timestamp. Una cláusula IF UPDATE() en el cuerpo de un desencadenador DML devuelve TRUE si estas columnas se actualizaron.

El ejemplo siguiente crea un desencadenador que imprime un mensaje para el cliente si alguien intenta actualizar las columnas StateProvinceID o PostalCode de la tabla 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

Adiciones de comunidad

AGREGAR
Mostrar: