UPDATE()(Transact-SQL)
테이블 또는 뷰의 지정된 열에서 INSERT 또는 UPDATE를 시도했는지 여부를 나타내는 부울 값을 반환합니다. UPDATE()는 트리거가 특정 동작을 실행해야 하는지 여부를 테스트하기 위해 Transact-SQL INSERT 또는 UPDATE 트리거 내의 어디서나 사용할 수 있습니다.
구문
UPDATE ( column )
인수
- column
INSERT 또는 UPDATE 동작 중 하나에 관해 테스트할 열의 이름입니다. 테이블 이름은 트리거의 ON 절에 지정되므로 열 이름 앞에 테이블 이름을 사용하지 마십시오. 열에는 SQL Server에서 지원되는 모든 데이터 형식을 지정할 수 있습니다. 단, 계산 열은 이 컨텍스트에서 사용할 수 없습니다.
반환 형식
부울
주의
UPDATE()는 INSERT 또는 UPDATE의 성공 여부와 관계없이 TRUE를 반환합니다.
둘 이상의 열에 대해 INSERT 또는 UPDATE 동작을 테스트하려면 첫 번째 절 다음에 별도로 UPDATE(column) 절을 지정하십시오. COLUMNS_UPDATED를 사용하여 여러 열에 대한 INSERT 또는 UPDATE 동작을 테스트할 수도 있습니다. 이 경우 삽입 또는 업데이트된 열을 나타내는 비트 패턴이 반환됩니다.
열에 명시적인 값 또는 암시적인(NULL) 값이 삽입되었으므로 IF UPDATE는 INSERT 동작에 대해 TRUE 값을 반환합니다.
[!참고]
IF UPDATE(column) 절은 IF, IF...ELSE 또는 WHILE 절과 같은 기능을 수행하며 BEGIN...END 블록을 사용할 수 있습니다. 자세한 내용은 흐름 제어 언어(Transact-SQL)를 참조하십시오.
UPDATE(column)는 Transact-SQL 트리거 본문 내의 어디서나 사용할 수 있습니다.
[!참고]
SQL Server 2000에서는 UPDATE()가 timestamp 열의 변경 내용을 검색하지 않습니다. 이 열에 대해서는 열의 업데이트 여부와 관계없이 트리거 내의 IF UPDATE() 절이 FALSE를 반환합니다. SQL Server 2008 및 SQL Server 2005에서는 UPDATE()가 timestamp 열의 변경 내용을 검색합니다. DML 트리거 내의 IF UPDATE() 절은 이러한 열이 업데이트된 경우 TRUE를 반환합니다.
예
다음 예에서는 사용자가 Address 테이블의 StateProvinceID 또는 PostalCode 열을 업데이트하려고 하면 클라이언트에게 메시지를 출력하는 트리거를 만듭니다.
USE AdventureWorks2008R2;
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