문제 ) 구매가 발생하면 , 해당 유저의 지금까지 구매한 총 금액을 저장하기
테이블
CREATE TABLE BUY (
user_id VARCHAR2(300),
price NUMBER
);
CREATE TABLE USER_BUY_STATS (
user_id VARCHAR2(300),
price_sum NUMBER
);
업데이트 연습을 위해 미리 넣어두기
INSERT INTO USER_BUY_STATS (user_id, price_sum) VALUES ('USER', 0);
이벤트 발생 시키기 위한 INSERT
INSERT INTO BUY (user_id, price) VALUES ('USER',100);
트리거 작성
CREATE OR REPLACE TRIGGER SUM_BUY_PRICES_TRIGGER
BEFORE INSERT ON TEEMO.BUY
FOR EACH ROW
DECLARE --변수 선언
TOTAL NUMBER;
BEGIN
IF INSERTING THEN
--INTO 변수 대입
SELECT SUM(price) INTO TOTAL FROM TEEMO.BUY WHERE user_id = :NEW.user_id GROUP BY price;
--DBMS_OUTPUT.PUT_LINE('price:'||TOTAL);
UPDATE TEEMO.USER_BUY_STATS SET price_sum = TOTAL+:NEW.price WHERE user_id = :NEW.user_id;
END IF;
EXCEPTION
WHEN OTHERS THEN
BEGIN
DBMS_OUTPUT.PUT_LINE('Exception:'||SQLERRM);--오류확인
END;
END SUM_BUY_PRICES_TRIGGER;
발생한 오류는 따로 작성