[sql] FOR와 AFTER 트리거의 차이점은 무엇입니까?

FORAFTER트리거 의 차이점은 무엇입니까 ?



답변

차이는 없습니다. 그들은 같은 일을합니다.

CREATE TRIGGER trgTable on dbo.Table FOR INSERT,UPDATE,DELETE

와 같다

CREATE TRIGGER trgTable on dbo.Table AFTER INSERT,UPDATE,DELETE

INSTEAD OF트리거 다르고 이전 대신 인서트의 화재 및 기본 테이블에 해당하는 값을 삽입하기 위해 뷰에 사용될 수있다.


답변

@Ben 은 절대적으로 옳습니다.

다음은 MSDN 문서 SQL Server 트리거 탐색입니다.

기사의 단락 :

이 구문은 이전 버전의 SQL Server에서도 사용할 수 있습니다. 그러나 SQL Server 2000에는 두 가지 유형의 트리거가 있으므로 FOR 트리거를 AFTER 트리거라고 부르는 것을 선호합니다. 따라서이 기사의 나머지 부분에서는 AFTER 또는 INSTEAD OF 트리거를 참조합니다.

앞에서 본 AFTER 트리거와 마찬가지로이 트리거는 lastname 필드가 변경되지 않도록합니다. 그러나 이전 예제와는 다르게이 비즈니스 규칙을 구현합니다. INSTEAD OF 트리거가 UPDATE 문 대신 실행되기 때문에 INSTEAD OF 트리거는 비즈니스 규칙 테스트가 통과하는지 여부를 평가합니다. 비즈니스 규칙 테스트가 통과하면 업데이트가 발생하기 위해 INSTEAD OF 트리거가 명시 적으로 UPDATE 문을 다시 호출해야합니다.


답변

AFTER는 트리거링 SQL 문에 지정된 모든 작업이 성공적으로 실행 된 경우에만 DML 트리거가 실행되도록 지정합니다. 이 트리거가 실행되기 전에 모든 참조 계단식 작업 및 제약 조건 검사도 성공해야합니다. FOR가 지정된 유일한 키워드 인 경우 AFTER가 기본값입니다.

AFTER 트리거는 뷰에서 정의 할 수 없습니다.

INSTEAD OF 트리거 SQL 문 대신 DML 트리거가 실행되도록 지정하여 트리거 문의 작업을 무시합니다. INSTEAD OF는 DDL 또는 로그온 트리거에 대해 지정할 수 없습니다.

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql


답변