Adventure Time - Finn 3
본문 바로가기
DB

트리거 연습 2

by hyun9_9 2024. 1. 30.

문제 ) 구매가 발생하면 , 해당 유저의 지금까지 구매한 총 금액을 저장하기

 

테이블

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;

 

발생한 오류는 따로 작성

'DB' 카테고리의 다른 글

쿼리문에서 1을 사용하는 이유  (0) 2024.02.03
유저 탈퇴 트리거  (0) 2024.02.01
트리거 연습1  (0) 2024.01.29
DBeaver  (0) 2024.01.28
Trigger  (0) 2024.01.26