DB - 함수, 프로시저, 트리거

박근수·2024년 1월 28일

DB

목록 보기
6/10

함수

DBSM에서 제공되는 공통적 함수 이외에 사용자가 직접 정의하고 작성
SQL을 활용하여 일련의 로직을 수행하고, 수행 결과를 단일값으로 반환할 수 있는 모듈

select password, sf_password(password) as password mask 
from member;
	
create function sf_password(password varchar(255))
	return varchar(255)
begin
	return
	   case
    	 when length(password) > 2 then concat(substring(password, 1, 2), '**')
         else
        	'****'
	end;
end;

함수 삭제

drop function sf_password;

프로시저

여러개의 SQL문을 같이 실행(비즈니스 업무 로직을 수행)

함수와의 차이점

함수는 리턴값을 가지고있지만, 프로시저는 리턴값 없이 실행되는문

장점

  • 네트워크를 통한 쿼리의 전송 속도 상대적으로 빠름
  • DB에서 바로 수정 적용이 용이함
  • DB와 서버 개발을 구분해서 개바 가능
//호출 방법
call sp_select_member();

//프로시저 생성
create procedure sp_select_member()
begin
	select * from memebr;
end;

//삭제 방법
drop procedure sp_select_member();

트리거

  • 특정 조건이 만족하면 자동으로 실행되는 장치
  • 주로 INSERT, UPDATE, DELETE 동작에 사용 (동작 시점은 After, Before)

차이점

프로시저, 평선과 다르게 한 번 설정을 하면 동작을 항상 감지하고 있다가 조건에 해당하는 동작이 수행되는 순간 실행되는 특징

//트리거 생성
create trigger tg_member_mobile_no_history
	//테이블에 업데이트 동작이 실행되면
	befor update on member_detail
    for each row
    begin
    	//변경 전 값들을 history 테이블에 저장
    	insert into member_detail_history(
        member_type, user_id, mobile_no, update_date)
        values (old.member_type, old.user_id, old.mobile_no, now()
        );
    end;
    
//UPDATE
update member_detail set mobile_no = '01055555555'
where member_type = 'email' and user_id = 'test@naver.com'

profile
개발블로그

0개의 댓글