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


UPDATE() (Transact-SQL)

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

Значок ссылки на разделСоглашения о синтаксисе в Transact-SQL

Синтаксис

UPDATE ( column ) 

Аргументы

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

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

Boolean

Замечания

Функция 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.

ПримечаниеПримечание

В SQL Server 2000 функция UPDATE() не обнаруживает изменений для столбцов timestamp. Для таких столбцов предложение IF UPDATE() внутри тела триггера возвращает значение FALSE независимо от того, обновились ли столбцы. В SQL Server 2008 и SQL Server 2005 функция UPDATE() определяет изменения в столбцах типа timestamp. Предложение IF UPDATE() внутри тела триггера DML возвращает значение TRUE, если эти столбцы обновились.

Примеры

Следующий пример создает триггер, который выдает сообщение клиенту при попытке обновить столбец StateProvinceID или PostalCode в таблице 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

См. также

Справочник