適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric の SQL データベース
テーブルやビューの指定された列に対して INSERT または UPDATE の試みが行われたかどうかを示すブール値を返します。 UPDATE()は、Transact-SQL INSERT トリガーの内部のどこでも、トリガーが特定の動作を実行するかどうかをテストするために使われ UPDATE 。
構文
UPDATE ( column )
引数
column
は INSERT アクションかアクション UPDATE をテストするカラムの名前です。 トリガーの ON 句にテーブル名が指定されているため、列名の前にテーブル名を含めないでください。 この列のデータ型は、SQL Server がサポートしているものであれば、どのようなデータ型でもかまいません。 ただし、計算列を使用することはできません。
戻り値の型
ブール値
解説
UPDATE()は INSERT でも UPDATE でも、真返ります。
複数の列に対して INSERT または UPDATE アクションをテストするには、最初の列の後に別の UPDATE(列)節を指定します。 また、COLUMNS_UPDATEDを使って複数の列を INSERT または UPDATE アクションでテストすることも可能です。 これは、挿入または更新された列を示すビット パターンを返します。
UPDATE はINSERTアクションでTRUE値を返します。なぜなら、列には明示的な値か暗黙的(NULL)値が挿入されているからです。
Note
IF UPDATE(列)節は IF と同じ機能を持ち、もし...ELSE、またはWHILE節であり、BEGIN...終結。 詳細については、「フロー制御言語 (Transact-SQL)」を参照してください。
UPDATE(カラム)は Transact-SQL トリガーの内部のどこでも使用できます。
トリガーを列に適用すると、列の値が更されない場合でも、UPDATED 値が true または 1 として返されます。 これは意図されたもので、トリガーでは挿入/更新/削除操作を許容するかどうかを決定するビジネス ロジックを実装する必要があります。
例
次の例では、StateProvinceID テーブルの PostalCode 列または 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