|
정진후 님이 쓰신 글 :
: 트리거 님이 쓰신 글 :
: : 트리거에서 update는 어케하는지 아시는분 갈켜주시면 감사..
: : 일반 테이블에서 레코드가 있고..( insert/ delete 는 이해가 되는데..)
: : 기존 레코드의 값이 변경 되었을때 기존의 값과 새로 변경 된 값이 트리거로
: : 반영이 되어야 할텐데..
: : 읽어주셔서 대단히 감사합니다..
: : 아시는분 꼭좀 부탁합니다..
:
: 안녕하세요. 정진후라고 합니다.
: 우선 mssql에서 트리거를 사용하실 때 알아두셔야 할 개념이
: inserted,와 deleted라는 가상 테이블입니다.
: 가상 테이블이라고 하기는 좀 뭣하지만 update문이 적용이 될 때 메모리
: 상에서 확보되는 공간이라고 생각하시면 될 것 같고요.
: 이름에서도 예상이 되시겠지만 update문이 실행이되면,
: deleted테이블에는 update문이 실행되기 이전의 값이 들어가고,
: inserted테이블에는 바뀌어진 값이 들어가게 됩니다.
:
: 간단한 예를 들어본다면
:
: CREATE TRIGGER [UPDATE_ON_sometavle] ON dbo.somedb
: FOR UPDATE
: AS
: DECLARE @charfield char(5), @intfield int, @timefield datetime
:
: SELECT @charfield = somefield1, @intfield = somefield2, @timefield = somefield3
: FROM inserted
: //deleted 테이블의 값도 물론 위와 같은 방식으로 변수를 지정하고 참조 가능합니다.
: //----------------------이건 일례 입니다.
: IF @timefield IS NULL
: BEGIN
: SET @timefield = getdate()
: END
:
:
: IF @intfield = 0
: BEGIN
: UPDATE sometable
: SET somefield2 = @intfield,
: somefield3 = @timefield
: WHERE somefield1 = @charfield;
: END
:
: 뭐 조금은 간단한 예이지만 개략적인 내용은 아시겠지요?
: 설명이 부족한 부분이 있으면 다시 질문해주세요.
: 아는데까지 다시 답변 드리겠습니다.
|