Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: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