http://blog.naver.com/primary_key/110023557784
[출처] MSSQL Trigger(기초)|작성자 푸른밤
[출처] MSSQL Trigger(기초)|작성자 푸른밤
오라클은 트리거를 탈때 칼럼마다 OLD, NEW가 생성되는데 MSSQL은 변형된 데이터가 테이블에 저장되는 것이다.
간단히 정리하자면
MSSQL 의 임시테이블 DELETED, INSERTED 는
데이터 INSERT의경우 : INSERTED 발생
데이터 UPDATE의경우 : DELETED, INSERTED 발생
데이터 DELETE의 경우 : DELETED 발생
한다.
간단한 테스튼 아래와 같다
ALTER TRIGGER [rzzzTest] on [dbo].[zzzTest]
FOR INSERT, UPDATE, DELETE NOT FOR REPLICATION
AS
BEGIN
DECLARE @CNT_INS INT
, @CNT_DEL INT
SELECT @CNT_DEL = COUNT(*) FROM DELETED
SELECT @CNT_INS = COUNT(*) FROM INSERTED
IF @CNT_DEL > 0 AND @CNT_INS > 0 BEGIN --UPDATE된 것임
update c set
c.B1 = 'update'
,c.G1 = @CNT_DEL
,c.F1 = @CNT_INS
from zzzTest c, inserted b
where c.itemcode = b.itemcode
select 'update'
END ELSE IF @CNT_DEL = 0 AND @CNT_INS > 0 BEGIN --INSERT 된 것임
update c set
c.a1 = 'insert'
,c.G1 = @CNT_DEL
,c.F1 = @CNT_INS
from zzzTest c, inserted b
where c.itemcode = b.itemcode
select 'insert'
END
ELSE IF @CNT_DEL > 0 AND @CNT_INS = 0 BEGIN --DELETE 된 것임
SELECT 1 --아무 이벤트 없는 것임
END
end
[출처] MSSQL Trigger(기초)|작성자 푸른밤
'.NET > MS-SQL' 카테고리의 다른 글
인덱스 유형 (0) | 2013.12.26 |
---|---|
[MS-SQL] 인덱스 옵션 (0) | 2013.09.01 |
[SQL CE] SQL Server Compact - 버전별 새로운 기능 (0) | 2013.08.05 |
[MS-SQL] 임시테이블, 전역 임시테이블 (0) | 2013.07.24 |
[MS-SQL] 성능모니터 간략설명 (0) | 2013.07.24 |