본문 바로가기
프로젝트

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

by do_ng 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')