[DB] 저장 프로시저, 트리거

Yujeong·2024년 7월 28일
0

데이터베이스

목록 보기
9/14
post-thumbnail

저장 프로시저(Stored Procedure)

  • 데이터베이스 내에 저장되고 실행되는 SQL 명령어 집합
  • 데이터베이스 서버에서 컴파일되고 실행되는 코드
  • 데이터베이스에서 프로시저는 저장 프로시저를 의미

저장 프로시저 특징

  • 데이터베이스 시스템 내부에 저장
  • 사전에 컴파일되어 효율적으로 실행(생성 시 컴파일)
  • 보안성 높음
  • 데이터베이스 접근을 중앙 집중적으로 관리
  • 다양한 데이터베이스 작업(삽입, 갱신, 삭제, 조회 등) 수행
  • 매개변수를 받아 처리
  • 단일 값 또는 여러 값 반환
  • 트리거와 함께 사용되어 특정 이벤트 발생 시 자동으로 실행

저장 프로시저 명령어

  • 정의
CREATE PROCEDURE procedure_name
    @parameter1 datatype,
    @parameter2 datatype,
    @parameter3 datatype
AS
BEGIN
    -- 여기에 프로시저가 수행할 작업 작성
    INSERT INTO table_name (column1, column2, column3)
    VALUES (@parameter1, @parameter2, @parameter3);
END;
  • 호출
EXECUTE procedure_name value1, value2, value3;
EXEC procedure_name value1, value2, value3;

트리거(Trigger)

조건이 만족될 때 수행할 작업을 명시하여 자동으로 지정된 작업을 수행하게 만드는 일종의 프로시저

트리거 특징

  • 자동 실행
    특정 이벤트(INSERT, UPDATE, DELETE)가 발생할 때 자동으로 실행

  • 테이블 연관성
    트리거는 특정 테이블에 연관되어 있으며, 해당 테이블에 이벤트가 발생할 때 작동

  • 데이터 일관성, 무결성 유지
    데이터 입력 전에 유효성을 검사하거나 연관된 테이블 간의 데이터 동기화

  • 감사 및 로깅
    데이터 변경 내역을 자동으로 기록하여 감사 및 추적 작업 수행

ECA(Event-Condition-Action) Rule

트리거 구성 요소

  • 이벤트(Event)
    트리거 실행시키는 명령문
  • 조건(Condition)
    트리거와 관련된 동작 수행 조건
  • 작업(Action)
    트리거가 정의된 조건을 만족했을 때 작업이 DBMS에 의해 자동으로 수행

트리거 분류

실행 시점실행 범위내용
BEFORESTATEMENTSQL문이 실행되기 전에 그 문장에 대해 한 번 실행
BEFOREROWDML 작업하기 전에 각 ROW에 대해 한 번씩 실행
AFTERSTATEMENTSQL문이 실행된 후 그 문장에 대해 한 번 실행
AFTERROWDML 작업한 후 각 ROW에 대해 한 번씩 실행

트리거 명령어

  • 정의
CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON table_name
FOR EACH ROW
BEGIN
    -- 트리거가 실행할 작업 작성
END;
  • 삭제
DROP TRIGGER trigger_name;
  • 활성/비활성
ALTER TRIGGER trigger_name {DISABLE | ENABLE};
  • 재컴파일
ALTER TRIGGER trigger_name COMPILE;

저장 프로시저와 트리거 차이점

프로시저트리거
CREATE PROCEDURE 문법 사용CREATE TRIGGER 문법 사용
EXECUTE 명령어로 실행생성 후 자동으로 실행
COMMIT, ROLLBACK 실행 가능COMMIT, ROLLBACK 실행 불가능

참고
데이터베이스론

profile
공부 기록

0개의 댓글