본문 바로가기
프로젝트

유저의 등급 관련 스토어드 프로시저

by dongR 2021. 4. 18.

스토어드 프로시저를 사용하는 이유)

1. Java 단에서 복잡한 로직과 쿼리문을 매번 작성하지 않고 데이터베이스 내에 하나의 스토어드 프로시저를 만들어 놓으면 쉽게 유지보수를 할 수 있다. 

 

2. 자주 사용되는 복잡한 쿼리문을 매번 실행하는 대신 데이터베이스 서버에 저장함수로 만들어 놓고 필요할 때마다 프로시저 이름,매개변수 등의 필요한 몇개의 텍스트만 전송함으로 네트워크의 부하를 줄일 수 있다. 

 

스토어드 프로시저가 사용되는 때) 

1. 회원이 동영상 게시물 업로드시 경험치를 얻은 후 등급 상승 여부 확인 후 조건에 맞을 시 업데이트 

 

2. 회원이 로그인 후 경험치를 얻은 후 등급 상승 여부 확인 조건에 맞을시 업데이트 

 

--> 등급 상승 여부를 확인하고 업데이트 하는 과정은 복잡한 조건문과 쿼리문이 자주 실행되기 때문에 스토어드 프로시저를 만들어서 사용하면 편리하다. 

 

<해당 유저의 등급 상승 여부 확인후 업데이트하는 스토어드 프로시저>

CREATE DEFINER=`root`@`%` PROCEDURE `rankUpdateCk_procedure`(
	IN this_user_id VARCHAR(20) -- 파라미터로 들어온 값의 이름과 타입을 지정 
)
BEGIN
	DECLARE exp INT; -- select 해서 받을 변수(exp)선언 
    SELECT user_exp into exp FROM user WHERE user_id = this_user_id;
    IF(exp >= 1000  AND exp < 3000) THEN 
		UPDATE user SET user_rank = 'Silver',user_rank_code = 2 where user_id = this_user_id; 
	ELSEIF(exp >= 3000 AND exp < 10000) THEN 
		UPDATE user SET user_rank = 'Gold',user_rank_code = 3 where user_id = this_user_id;
	ELSEIF(exp >= 10000) THEN 
		UPDATE user SET user_rank = 'Platinum',user_rank_code = 4 where user_id = this_user_id;		
	END IF;   
END

 

-- 프로시저 호출(파라미터에는 해당 유저의ID가 들어감) 
call rankUpdateCk_procedure('admin')