Поделиться через


Функции триггера — UPDATE (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

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

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

Синтаксис

UPDATE ( column )   

Аргументы

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

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

Логический

Замечания

Функция UPDATE() возвращает TRUE независимо от того, была ли попытка применить операторы INSERT или UPDATE удачной.

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

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

Примечание.

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

UPDATE(column) может применяться в любой части текста триггера 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)