Megosztás a következőn keresztül:


FRISSÍTÉS - 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

Olyan Boole-értéket ad vissza, amely jelzi, hogy történt-e INSERT vagy UPDATE kísérlet egy tábla vagy nézet meghatározott oszlopán. A UPDATE() bármely helyen a Transact-SQL INSERT vagy UPDATE trigger testén belül használatos annak tesztelésére, hogy a triggernek végrehajtania kell-e bizonyos műveleteket.

Transact-SQL szintaxis konvenciók

Szemantika

UPDATE ( column )   

Arguments

oszlop
Az oszlop neve, amelyet INSERT vagy UPDATE műveletet tesztelünk. 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

A UPDATE() TRUE értéket ad vissza, függetlenül attól, hogy az INSERT vagy UPDATE próbálkozás sikeres.

Ha több oszlopra szeretnél tesztelni egy INSERT vagy UPDATE műveletet, az első után külön UPDATE(oszlop) záradást adjunk be. Több oszlopot is tesztelhetünk INSERT vagy UPDATE műveletekre 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 INSERT műveletekben adja vissza a TRUE értéket, mert az oszlopok vagy explicit vagy implicit (NULL) értékeket tartalmaznak.

Megjegyzés:

Az IF UPDATE(oszlop) klauzula ugyanúgy működik, mint az IF, IF... 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 trigger 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)
LÉTREHOZNI TRIGGERET (Transact-SQL)