mysql 트리거 질문입니다. 0 1 983

by 시우쿤 [MySQL] [2017.10.06 18:05:45]


전에 에러는 해결했는데요.

delimiter //;

create trigger sale_stat after
insert on att_order_dt
for each row
begin
        IF new.pcode <> old.pcode then
            INSERT INTO att_sale(pcode, sqty, stotal) 
            values(
                new.pcode,
                new.quantity,
                new.price
            );
        else
            update att_sale 
            set
            sqty = sqty + new.quantity,
            stotal = stotal + new.price;
        end if;    
end //;

주문테이블에 동일한 상품코드가 등록된다면,

매출테이블에 수량과 가격을 더할려고 하는데,

new, old를 써서 상품코드를 비교할려고 하는데 안 되더라구요.

알려주시면 감사하겠습니다. ㅜㅠ

by 호야 [2017.10.07 19:30:05]

 

 

Mysql 을 잘 몰라서 ^^; 도움이 될련가 모르겠지만...

1.  Insert 에 대한 Trigger는 기본적으로 OLD 값을 가지지 않습니다
   - 새로 들어 오는 값만 존재하고 예전값을 없기 때문입니다
   - OLD 값을 가지는 경우는 Update나 Delete가 있겠네요.

2. MySQL On Duplicate Key Update Statement 사용
  - Mysql Insert 일 경우 동일한 PK로 중복 입력 될 경우 우회 구문
  - 반드시, Pcode는 Primary Key 이어야 합니다.

delimiter //;

create trigger sale_stat after
insert on att_order_dt
for each row
begin
         INSERT INTO att_sale(pcode, sqty, stotal) 
            values(
                new.pcode,
                new.quantity,
                new.price
            )
        ON DUPLICATE KEY
            update sqty = sqty + new.quantity,
            stotal = stotal + new.price;

end //;

아래 사이트 참고 했습니다. 전 Mysql 몰라용 ㅜㅜ

http://blog.naver.com/minsoub/60131352298

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입