오라클 트리거 질문입니다. 0 4 110

by 시우쿤 [Oracle 기초] 트리거 [2017.10.12 02:15:57]


오라클 트리거에 대해서 질문드립니다. 대상 테이블 insert시,

결제 테이블에 오늘 날짜고, 전의 결제한 상품코드와 같다면,

매출테이블에서 update문을 통해

매출액과 수량에 new.값을 더하는 식으로 하는건데,

trigger의 insert는 new.값만 사용할 수 있다고 알고 있습니다.

어떻게 하면 기존의 상품코드와 새로운 결제한 상품코드를 비교할 수있을지

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

 

by 마농 [2017.10.12 08:40:46]

기존의 상품코드와 새로운 결제한 상품코드는 서로 다른 테이블에 있죠.
 - 기존의 상품코드(매출테이블), 새로운 상품코드(결제테이블)
따라서 기존의 상품코드는 OLD 를 쓰는게 아니라 테이블에서 조회하는 거죠.
 

CREATE OR REPLACE TRIGGER tr_결재
AFTER INSERT
ON 결재
FOR EACH ROW
BEGIN
    IF :NEW.일자 = TO_CHAR(sysdate, 'yyyymmdd') THEN
        MERGE INTO 매출
        USING dual
--      ON 상품 = :NEW.상품     -- 괄호를 빼먹었네요.
        ON ( 상품 = :NEW.상품 )
        WHEN MATCHED THEN
        UPDATE SET 매출액 = 매출액 + :NEW.금액
                 , 수량   = 수량   + :NEW.수량
        WHEN NOT MATCHED THEN
        INSERT (상품, 매출액, 수량) VALUES (:NEW.상품, :NEW.금액, :NEW.수량)
        ;
    END IF;
END;
/

 


by 시우쿤 [2017.10.13 05:40:01]

답변 감사합니다.. 그런데 on keyword를 찾을 수 없다고 뜨네요 ㅠㅜ


by 마농 [2017.10.13 09:32:22]

괄호를 빼먹었네요.


by 우리집아찌 [2017.10.12 10:07:37]

그냥 INSERT LOG에 넣으시지 왜 TRIGGER를 쓰시는지?

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