UPDATE - 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 INSERT byl pokus o nebo UPDATE proveden na určeném sloupci tabulky nebo pohledu. UPDATE() se používá kdekoli uvnitř těla Transact-SQL INSERT nebo UPDATE spouště k ověření, zda by spouštěč měl provádět určité akce.

Transact-SQL konvence syntaxe

Syntaxe

UPDATE ( column )   

Arguments

sloupce
Je název sloupce, který testuje buď INSERT akci 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 INSERT pokus or UPDATE úspěšný.

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

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

Poznámka:

Klauzule IF UPDATE(sloupec) 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ě.

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)
CREATE TRIGGER (Transact-SQL)