Articles

SQL Server 트리거 후 업데이트를 특정 값으로

의:Dallas Snider|업데이트:2015-09-10|Comments(6)|관련상>트리거

문제

I need to create SQL Server 트리거하는 것이 실행될 때 열 값을 업데이트를 특정 값이 있습니다. 어떻게 하면 좋을까요?

솔루션

이 팁에서,우리는 우리를 작성하는 방법을 보여 T-SQL 문을 만들 것입니다 SQLServer 트리거가 실행되는 후에 우리는 열 업데이트 값을 specificvalue.

에서는 아래의 이미지 우리가 우리가 어디를 만들의 예를 표명 tblTriggerTest 기본 키를 열 이름 pkID,날짜 열 이름 OrderApprovalDateTime 및 varchar 열 이름 OrderStatus. OrderApprovalDateTime 이 NULL 로 설정되고 OrderStatus 가”보류 중”으로 설정된 세 개의 테스트 레코드로 테이블을 채 웁니다.

테이블을 만들고 삽입의 예 데이터

이 예제에서,우리는 우리의 방아쇠를 채우 OrderApprovalDateTime 현재 날짜에 의해 제공됩 getdate()함수 후 OrderStatus 입 업데이트하”승인”. 이 트리거를 만들기위한 T-SQL 은 아래에 나와 있습니다. 업데이트 된 행만 영향을 받도록 삽입 된 테이블에 내부 조인을 포함하는 것이 매우 중요합니다. 사용 절 OrderStatus=’승인되는’자체적으로 행을 제한 업데이트됩니다 실제로 모든 행 OrderStatus 가치의 승인되고 동시에 업데이트.

성공적으로 만들거

를 테스트하거,우리는 것이 실행 T-SQL UPDATE 문을 설정하 OrderStatus 값을”승인된”위한 첫 번째 행에서 테이블(pkID=1)입니다. T-SQL UPDATE 명령 후 T-SQL SELECT 쿼리를 실행하여 트리거가 올바르게 실행되었는지 확인합니다. 업데이트 및 SELECT 문의 출력은 아래와 같습니다.

성공적으로 테스트 트리거

위의 통지만 첫 번째 행을 했 OrderApprovalDateTime 설정을 현재 날짜 우리가 원하는 동작입니다. 그러나 올바른 행 수가 업데이트되었는지 확인하기 위해 두 번째 테스트를 실행해야합니다. 두 번째 테스트에서는 T-SQL UPDATE 문을 실행하여 테이블의 두 번째 행에 대해 OrderStatus 값을”승인 됨”으로 설정합니다(pkID=2). 를 선택한 후에 있는 모든 레코드를 표하는 방법을 알 OrderApprovalDateTime 두 번째 행에 대한 과 같지 않 OrderApprovalDateTime 을 위한 첫 번째 행이 있습니다. 다시 말하지만,이것은 우리가 원하는 행동이며 모두 잘 나타납니다.

테스트의 트리거를 다시

전체 코드를 이 팁은 아래의 상자에.

use MSSQLTipsgocreate table tblTriggerTest( pkID integer Identity(1,1) primary key, OrderApprovalDateTime datetime, OrderStatus varchar(20))insert into tblTriggerTest values (NULL, 'Pending')insert into tblTriggerTest values (NULL, 'Pending')insert into tblTriggerTest values (NULL, 'Pending')select * from tblTriggerTestgocreate trigger trTriggerTest on tblTriggerTestafter updateasbegin set nocount on; update tblTriggerTest set OrderApprovalDateTime=getdate() from tblTriggerTest t inner join inserted i on t.pkID=i.pkID and i.OrderStatus='Approved'endgoupdate tblTriggerTest set OrderStatus='Approved' where pkID=1goselect * from tblTriggerTestgoupdate tblTriggerTest set OrderStatus='Approved' where pkID=2goselect * from tblTriggerTestgo
다음 단계

몇 분을 탐험 무엇이 일어나 변경할 때의 내부에 가입하거나 열을 추가하는 테이블 및 트리거입니다.

또한 SQL Server 에서 더 많은 팁을 확인하십시오.MSSQLTips.com.

  • 강제거 발사하기 위해서는 SQL Server
  • 실수 방지하기 위해 업데이트하거나 삭제 명령어 모두의 행에는 SQL Server 테이블
  • 감사 트리거가 활성화 또는 비활성화에 대한 SQL Server

최근 업데이트: 2015-09-10

얻는 스크립트

다음 끝 버튼

저자에 관하여
MSSQLTips 저자 댈러스 스나이더박사 댈러스 스나이더 조 교수는 컴퓨터과학의 대학에 웨스트 플로리다고는 18 년 이상의 SQL 경험이다.
내 모든 팁보기
관련 리소스

  • 더 많은 데이터베이스 개발자 팁…