UPDATE() (Transact-SQL)

傳回一個布林值,用來指出是否在資料表或檢視的指定資料行上嘗試了 INSERT 或 UPDATE。 Transact-SQL INSERT 或 UPDATE 觸發程序主體內的任何位置,都可以利用 UPDATE() 來測試觸發程序是否應該執行特定動作。

主題連結圖示 Transact-SQL 語法慣例

語法

UPDATE ( column ) 

引數

  • column
    這是進行 INSERT 或 UPDATE 動作測試的資料行名稱。 由於資料表名稱指定在觸發程序的 ON 子句中,因此,請勿在資料行名稱前面併入資料表名稱。 資料行可以是 SQL Server 所支援的任何資料類型。 不過,在這個內容中,不能使用計算資料行。

傳回類型

Boolean

備註

不論 INSERT 或 UPDATE 嘗試成功與否,UPDATE() 都會傳回 TRUE。

若要測試多個資料行的 INSERT 或 UPDATE 動作,請在第一個資料行之後,指定個別的 UPDATE(column) 子句。 您可以利用 COLUMNS_UPDATED 來測試多個資料行的 INSERT 或 UPDATE 動作。 這會傳回一個位元模式來指出插入或更新了哪些資料行。

IF UPDATE 會在 INSERT 動作中傳回 TRUE 值,因為資料行插入了明確的值或隱含的 (NULL) 值。

[!附註]

IF UPDATE(column) 子句的功能與 IF、IF...ELSE 或 WHILE 子句相同,可以使用 BEGIN...END 區塊。 如需詳細資訊,請參閱<流程控制語言 (Transact-SQL)>。

Transact-SQL 觸發程序主體內的任何位置,都可以使用 UPDATE(column)。

範例

下列範例會建立一個當任何人試圖升級 Address 資料表的 StateProvinceID 或 PostalCode 資料行時,將訊息列印到用戶端的觸發程序。

USE AdventureWorks2012;
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

請參閱

參考

COLUMNS_UPDATED (Transact-SQL)

CREATE TRIGGER (Transact-SQL)