UPDATE - 트리거 기능 (Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric의 SQL 데이터베이스

테이블이나 뷰의 지정된 열에서 또는 INSERT 시도가 이루어졌는지 UPDATE 를 나타내는 불리언 값을 반환합니다. UPDATE()는 Transact-SQL INSERT 나 UPDATE 트리거 내부 어디에서든 트리거가 특정 동작을 수행해야 하는지 테스트하는 데 사용됩니다.

Transact-SQL 구문 표기 규칙

구문

UPDATE ( column )   

인수

column
는 또는 INSERTUPDATE 행동을 테스트할 열의 이름입니다. 테이블 이름은 트리거의 ON 절에 지정되므로 열 이름 앞에 테이블 이름을 사용하지 마세요. 열에는 SQL Server에서 지원되는 모든 데이터 형식을 지정할 수 있습니다. 단, 계산 열은 이 컨텍스트에서 사용할 수 없습니다.

반환 형식

부울

설명

UPDATE() 는 시도가 성공했는지 INSERTUPDATE 여부와 관계없이 참으로 반환됩니다.

또는 액션을 INSERTUPDATE 여러 열 이상에서 테스트하려면 첫 번째 열 뒤에 별도의 UPDATE(column) 절을 지정하세요. COLUMNS_UPDATED를 사용하여 다중 열이나 행동을 테스트 INSERTUPDATE 할 수도 있습니다. 이 경우 삽입 또는 업데이트된 열을 나타내는 비트 패턴이 반환됩니다.

IF UPDATE 는 행동에서 INSERT TRUE 값을 반환하는데, 이는 열에 명시적 값이나 암묵적(NULL) 값이 삽입되어 있기 때문입니다.

참고

IF UPDATE(열) 절은 IF, IF... ELSE, 또는 WHILE 절을 사용할 수 있으며, BEGIN...을 사용할 수 있습니다. 엔드 블록. 자세한 내용은 흐름 제어 언어(Transact-SQL)를 참조하세요.

UPDATE(컬럼)는 Transact-SQL 트리거 본체 어디에서든 사용할 수 있습니다.

트리거가 열에 적용되면 열 값이 변경되지 않는 경우에도 UPDATED 값은 true 또는 1로 반환됩니다. 이는 의도적으로 설계된 것이며 트리거는 삽입/업데이트/삭제 작업이 허용되는지 여부를 결정하는 비즈니스 논리를 구현해야 합니다.

예제

다음 예에서는 사용자가 StateProvinceID 테이블의 PostalCode 또는 Address 열을 업데이트하려고 하면 클라이언트에게 메시지를 출력하는 트리거를 만듭니다.

참고

Azure SQL Database와 Microsoft Fabric의 SQL 데이터베이스에서는 이 USE 문장이 제공되지 않습니다. 대신 의도한 데이터베이스에 직접 연결하고 나머지 코드 샘플을 실행하세요.

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