[ 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
Posted by 농부지기
,