Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-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)