[ MS SQL.Trigger - 예제2 ]
변수 정의해서 INSERTED 와 DELETED 를 SELECT 한 예제
CREATE TRIGGER TRG_TBL_MICHAK_INST ON TBL_MICHAK
FOR INSERT AS
DECLARE
@Old_in_amt DECIMAL(10),
@Comp_amt DECIMAL(10),
@d_in_numb CHAR(11),
@d_prat_row_id DECIMAL(12),
@i_item_dist_unit DECIMAL(10)
SELECT @d_in_numb = IN_NUMB, @d_prat_row_id = PRAT_ROW_ID
FROM DELETED;
SELECT @i_item_dist_unit = ITEM_DIST_UNIT
FROM INSERTED;
SELECT @TS_PURC_NUMB = PURC_NUMB, @TS_IN_NUMB = IN_NUMB,
FROM TBL_INPUT_DETA
WHERE PRAT_ROW_ID = @d_prat_row_id;
SELECT @Comp_amt = @Old_in_amt - @d_item_dist_unit + @i_item_dist_unit ;
UPDATE TBL_INPUT_DETA
SET PRC = @Comp_unit, AMT = @Comp_amt
WHERE IN_NUMB = @d_in_numb
AND PRAT_ROW_ID = @d_prat_row_id ;
IF @d_cost_gubn = '5‘ OR @d_cost_gubn = ‘7’
begin
UPDATE TBL_PRATIQUE_DETAIL
SET DIST_QTY = DIST_QTY - @d_this_dist_qty + @i_item_dist_unit
WHERE PRAT_NO = @d_prat_no
AND CODE_ITEM = @d_code_item
end
ELSE
begin
…
end
Print ‘난 Trigger 문이야….’
정의 :
- @ : 변수 정의 시 @를 붙여야 한다. 그리고 사용시에도 항상 @를 붙인다.
- SELECT 문법이 조금 변경 되었음. (INTO 문장이 없다)
- 계산식에도 SELECT 를 앞쪽에 기입해야 한다.
-문장을 기입시 begin
…….
end 를 두어야 한다.
- 문장 끝에 ; (콜론)을 넣이 않아도 된다.
- if 문장에서 then , end if 라는 예약어가 없다.
- print 문을 사용 하면 Query Analyzer 를 사용시에는 흐름을 볼 수 있지만
Application에서 작업시는 Error 로 인식 한다 (ROLLBACK 됨)
- DataWindow로 UPDATE() function 을 사용해서 저장시 Print 문을 만나면
다음과 같이 Error 로 인식한다.
'(DB) MS SQL > Trigger' 카테고리의 다른 글
MS SQL.Trigger - 예제1 (0) | 2017.01.27 |
---|---|
MS SQL.Trigger - 종류 (0) | 2017.01.27 |
MS SQL.Trigger - 특징 (0) | 2017.01.27 |
MS SQL.Trigger - 해법 (0) | 2017.01.27 |
MS SQL.Trigger - 문법 (0) | 2017.01.27 |