Sdílet prostřednictvím


AKTUALIZACE - Spouštěcí funkce (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Vrací Booleovskou hodnotu, která ukazuje, zda byl na určeném sloupci tabulky nebo pohledu proveden pokus o INSERT nebo UPDATE. UPDATE() se používá kdekoli uvnitř těla spouště INSERT nebo UPDATE Transact-SQL k ověření, zda by spouštěč měl provést určité akce.

Transact-SQL konvence syntaxe

Syntaxe

UPDATE ( column )   

Arguments

sloupce
Je název sloupce, který testuje buď akci INSERT, nebo UPDATE. Protože název tabulky je uveden v klauzuli ON spouštěče, neuvádějte název tabulky před název sloupce. Sloupec může být jakéhokoliv datového typu podporovaného SQL Serverem. Nicméně v tomto kontextu nelze použít vypočítané sloupce.

Návratové typy

logický

Poznámky

UPDATE() vrací TRUE bez ohledu na to, zda je pokus o INSERT nebo UPDATE úspěšný.

Pro testování akce INSERT nebo UPDATE pro více než jeden sloupec zadejte samostatnou klauzuli UPDATE(column) za první. Více sloupců lze také testovat na akce INSERT nebo UPDATE pomocí COLUMNS_UPDATED. To vrací bitový vzor, který ukazuje, které sloupce byly vloženy nebo aktualizovány.

IF UPDATE vrací hodnotu TRUE v akcích INSERT, protože sloupce obsahují buď explicitní hodnoty, nebo implicitní (NULL) hodnoty.

Poznámka:

Klauzule IF UPDATE(column) funguje stejně jako IF, IF... ELSE, nebo WHILE a můžete použít BEGIN... KONEC bloku. Pro více informací viz Jazyk řízení toku (Transact-SQL).

UPDATE(sloupec) lze použít kdekoli uvnitř těla Transact-SQL spouštěče.

Pokud se spouštěč vztahuje na sloupec, hodnota UPDATED se vrátí jako true nebo 1, i když hodnota sloupce zůstane nezměněna. Jedná se o návrh a trigger by měl implementovat obchodní logiku, která určuje, jestli je operace vložení, aktualizace/odstranění povolená nebo ne.

Examples

Následující příklad vytváří spouštěč, který vytiskne zprávu klientovi, když se někdo pokusí aktualizovat StateProvinceID sloupce nebo PostalCode tabulky 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  

Viz také

COLUMNS_UPDATED (Transact-SQL)
VYTVOŘIT SPOUŠŤ (Transact-SQL)