UPDATE() (Transact-SQL)
Gibt einen booleschen Wert zurück, der zeigt, ob der Versuch einer INSERT- oder UPDATE-Aktion an einer angegebenen Tabelle oder Sicht unternommen wurde. UPDATE() wird im Text eines Transact-SQL-INSERT- oder UPDATE-Triggers verwendet, um zu testen, ob der Trigger bestimmte Aktionen ausführen sollte.
Transact-SQL-Syntaxkonventionen
Syntax
UPDATE ( column )
Argumente
column
Der Name der auf eine INSERT- oder UPDATE-Aktion zu testenden Spalte. Da der Tabellenname in der ON-Klausel des Triggers angegeben ist, nehmen Sie den Tabellennamen nicht vor dem Spaltennamen in die Klausel auf. Die Spalte kann einen beliebigen Datentyp enthalten, der von SQL Server 2005 unterstützt wird. Berechnete Spalten können jedoch in diesem Kontext nicht verwendet werden.
Rückgabetypen
Boolesch
Hinweise
UPDATE() gibt TRUE zurück, und zwar unabhängig davon, ob ein INSERT- oder UPDATE-Versuch erfolgreich ist oder nicht.
Um mehrere Spalten auf eine INSERT- oder UPDATE-Aktion zu testen, geben Sie nach der ersten eine separate UPDATE(column)-Klausel an. Mithilfe von COLUMNS_UPDATED können auch mehrere Spalten auf INSERT- oder UPDATE-Aktionen getestet werden. Das hierbei zurückgegebene Bitmuster gibt an, welche Spalten eingefügt oder aktualisiert wurden.
IF UPDATE gibt den TRUE-Wert in INSERT-Aktionen zurück, da in die Spalten entweder explizite Werte oder implizite Werte (NULL) eingefügt werden.
Hinweis: |
---|
Die IF UPDATE(column)-Klausel funktioniert genauso wie eine IF-, IF…ELSE- oder WHILE-Klausel und kann den BEGIN…END-Block verwenden. Weitere Informationen finden Sie unter Ablaufsteuerungssprache (Transact-SQL). |
UPDATE(column) kann überall innerhalb des Textes eines Transact-SQL-Triggers verwendet werden.
Hinweis: |
---|
In SQL Server 2000 erkennt UPDATE() keine Änderungen an timestamp-Spalten. Für diese Spalten gibt eine IF UPDATE()-Klausel innerhalb des Triggertextes den Wert FALSE zurück, unabhängig davon, ob die Spalten aktualisiert werden oder nicht. In SQL Server 2005 erkennt UPDATE() Änderungen an timestamp-Spalten. Eine IF UPDATE()-Klausel innerhalb eines DML-Triggertextes gibt den Wert TRUE zurück, wenn diese Spalten aktualisiert werden. |
Beispiele
Das folgende Beispiel erstellt einen Trigger, der eine Meldung an den Client ausgibt, wenn jemand versucht, die StateProvinceID
- oder PostalCode
-Spalten der Address
-Tabelle zu aktualisieren.
USE AdventureWorks;
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
Siehe auch
Verweis
COLUMNS_UPDATED (Transact-SQL)
CREATE TRIGGER (Transact-SQL)