UPDATE()(Transact-SQL)
테이블 또는 뷰의 지정된 열에서 INSERT 또는 UPDATE를 시도했는지 여부를 나타내는 부울 값을 반환합니다. UPDATE()는 트리거가 특정 작업을 실행해야 하는지 여부를 테스트하기 위해 Transact-SQL INSERT 또는 UPDATE 트리거 내의 어디서나 사용할 수 있습니다.
구문
UPDATE ( column )
인수
column
INSERT 또는 UPDATE 작업 중 하나에 관해 테스트할 열의 이름입니다. 테이블 이름은 트리거의 ON 절에 지정되므로 열 이름 앞에 테이블 이름을 사용하지 마십시오. 열에는 SQL Server 2005 에서 지원되는 모든 데이터 형식을 지정할 수 있습니다. 단, 계산 열은 이 컨텍스트에서 사용할 수 없습니다.
주의
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 2005 에서는 UPDATE()가 timestamp 열의 변경 내용을 검색합니다. DML 트리거 내의 IF UPDATE() 절은 이러한 열이 업데이트된 경우 TRUE를 반환합니다.
반환 형식
부울
예
다음 예에서는 사용자가 Address
테이블의 StateProvinceID
또는 PostalCode
열을 업데이트하려고 하면 클라이언트에게 메시지를 출력하는 트리거를 만듭니다.
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
참고 항목
참조
COLUMNS_UPDATED(Transact-SQL)
CREATE TRIGGER(Transact-SQL)