UPDATE - Trigger funkciók (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Egy Boole-értéket ad vissza, amely jelzi, hogy INSERT történt-e vagy UPDATE egy adott oszlop során egy tábla vagy nézet egy adott oszlopa. UPDATE() a Transact-SQL INSERT vagy UPDATE a trigger testén belül bárhol használják annak tesztelésére, hogy a triggernek végrehajtsa-e bizonyos műveleteket.

Transact-SQL szintaxis konvenciók

Szemantika

UPDATE ( column )   

Arguments

oszlop
Az oszlop neve, amit vagy egy vagy UPDATE műveletet tesztelni INSERT kell. Mivel a tábla neve a trigger ON klauzulájában van megadva, ne tegyük fel a táblanevet az oszlopnév előtt. Az oszlop bármilyen adattípusú , amelyet az SQL Server támogat. Azonban a kiszámított oszlopok ebben a kontextusban nem használhatók.

Visszatérési típusok

logikai

Megjegyzések

UPDATE() TRUE (TRUE) ad, függetlenül attól, hogy egy INSERT vagy UPDATE próbálkozás sikeres.

Ha több oszlopra vagy INSERT műveletet UPDATE tesztelj, akkor az első után külön UPDATE(oszlop) záradást adjunk be. Több oszlopot is tesztelhetünk INSERT vagy UPDATE végrehajthatunk COLUMNS_UPDATED használatával. Ez egy bitmintát ad vissza, amely megmutatja, mely oszlopokat helyezték be vagy frissítettek.

Az IF UPDATE az TRUE értéket adja vissza az INSERT akciókban, mert az oszlopokba vagy explicit vagy implicit (NULL) értékek kerülnek be.

Megjegyzés:

Az IF UPDATE(oszlop) klauzula ugyanúgy működik, mint az IF, HA... ELSE, vagy WHILE klauzulat, és használhatja a BEGIN... END blokk. További információért lásd: Flow-of-Flow Language (Transact-SQL).

UPDATE(oszlop) a Transact-SQL ravasz testén bárhol használható.

Ha egy oszlopra aktiválódik a trigger, az UPDATED érték akkor is visszatér, mint true vagy 1, még akkor is, ha az oszlop értéke változatlan marad. Ez a kialakítás, és az eseményindítónak üzleti logikát kell implementálnia, amely meghatározza, hogy a beszúrási/frissítési/törlési művelet megengedett-e vagy sem.

Példák

A következő példa létrehoz egy triggert, amely üzenetet nyomtat a kliensnek, amikor valaki megpróbálja frissíteni a StateProvinceID tábla or PostalCode oszlopait 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  

Lásd még:

COLUMNS_UPDATED (Transact-SQL)
CREATE TRIGGER (Transact-SQL)