UPDATE - Триггерные функции (Transact-SQL)

Применимо к:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureБаза данных SQL в Microsoft Fabric

Возвращает булево значение, указывающее, была INSERTUPDATE ли выполнена попытка или на определённом столбце таблицы или представления. UPDATE() используется в любой части корпуса Transact-SQL INSERT или UPDATE триггера для проверки, должен ли триггер выполнять определённые действия.

Соглашения о синтаксисе Transact-SQL

Синтаксис

UPDATE ( column )   

Аргументы

column
Это название столбца для проверки действия INSERT или UPDATE . Так как имя столбца указано в предложении триггера ON, не ставьте имя таблицы перед именем столбца. Столбец может иметь любой тип данных, поддерживаемый SQL Server. Однако вычисляемые столбцы не могут использоваться в данном контексте.

Типы возвращаемых данных

Логический

Замечания

UPDATE() возвращает TRUE независимо от того, успешна INSERT ли попытка или UPDATE .

Чтобы проверить действие INSERT или UPDATE для более чем одного столбца, укажите отдельное UPDATE(столбцо) предложение после первой. Несколько столбцов также могут быть протестированы на INSERT действия UPDATE или действия с помощью COLUMNS_UPDATED. В результате возвращается битовый шаблон, который указывает на то, какие столбцы были вставлены или обновлены.

IF UPDATE возвращает значение TRUE в INSERT действиях, потому что столбцы имеют либо явные, либо неявные (NULL) значения.

Примечание.

Предложение IF UPDATE(столбца) функционирует так же, как IF, IF... ELSE или WHILE и может использовать BEGIN... END блока. Дополнительные сведения см. в разделе Язык управления потоком (Transact-SQL).

UPDATE(столбца) может использоваться в любом месте внутри корпуса Transact-SQL триггера.

Если триггер применяется к столбцу, значение UPDATED будет возвращаться в виде true или 1, даже если значение столбца остается неизменным. Это нормальное поведение, и триггер должен реализовывать бизнес-логику, которая определяет, допустимы ли операции вставки, обновления и удаления.

Примеры

Следующий пример создает триггер, который выдает сообщение клиенту при попытке обновить столбец StateProvinceID или PostalCode в таблице Address.

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  

См. также

COLUMNS_UPDATED (Transact-SQL)
CREATE TRIGGER (Transact-SQL)