Udostępnij za pomocą


AKTUALIZACJA - Funkcje wyzwalające (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Zwraca wartość boolowską, która wskazuje, czy próba INSERT lub UPDATE została podjęta na określonej kolumnie tabeli lub widoku. UPDATE() jest używany w dowolnym miejscu wewnątrz ciała wyzwalacza INSERT lub UPDATE Transact-SQL do testowania, czy wyzwalacz powinien wykonać określone akcje.

Transact-SQL konwencje składni

Składnia

UPDATE ( column )   

Arguments

kolumna
To nazwa kolumny testującej działanie INSERT lub UPDATE. Ponieważ nazwa tabeli jest podana w klauzuli ON wyzwalacza, nie należy dodawać nazwy tabeli przed nazwą kolumny. Kolumna może mieć dowolny typ danych obsługiwany przez SQL Server. Jednak kolumny obliczeniowe nie mogą być używane w tym kontekście.

Typy zwracane

logiczny

Uwagi

UPDATE() zwraca TRUE niezależnie od tego, czy próba INSERT lub UPDATE zakończyła się sukcesem.

Aby sprawdzić działanie INSERT lub UPDATE dla więcej niż jednej kolumny, określ osobną klauzulę UPDATE(column) po pierwszej. Wiele kolumn można również testować pod kątem akcji INSERT lub UPDATE, używając COLUMNS_UPDATED. Zwraca to wzór bitowy wskazujący, które kolumny zostały wstawione lub zaktualizowane.

IF UPDATE zwraca wartość TRUE w akcjach INSERT, ponieważ kolumny mają wstawione wartości jawne lub wartości implicitne (NULL).

Uwaga / Notatka

Klauzula IF UPDATE(column) działa tak samo jak IF, IF... ELSE, lub WHILE i można użyć BEGIN... KONIEC bloku. Więcej informacji można znaleźć w Języku kontroli przepływu (Transact-SQL).

UPDATE(column) może być używany w dowolnym miejscu wewnątrz ciała wyzwalacza Transact-SQL.

Jeśli wyzwalacz zostanie zastosowany do kolumny, wartość UPDATED zwróci się jako true lub 1, nawet jeśli wartość kolumny pozostaje niezmieniona. Jest to projektowe, a wyzwalacz powinien implementować logikę biznesową, która określa, czy operacja wstawiania/aktualizowania/usuwania jest dozwolona, czy nie.

Przykłady

Poniższy przykład tworzy wyzwalacz, który wyświetla komunikat klientowi, gdy ktoś próbuje zaktualizować kolumny StateProvinceID tabeli or PostalCode w tabeli 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  

Zobacz też

COLUMNS_UPDATED (Transact-SQL)
UTWÓRZ TRIGGER (Transact-SQL)