반응형
Ant_U
DBA 개미
Ant_U
전체 방문자
오늘
어제
  • 분류 전체보기 (262)
    • AWS (3)
    • C# (1)
    • SQL (236)
      • MYSQL (186)
      • MSSQL (50)
    • 자격증 (20)
      • SQLD (12)
      • SQLP (8)

인기 글

최근 글

250x250
hELLO · Designed By 정상우.
Ant_U

DBA 개미

SQL/MYSQL

[MYSQL] 트리거 사용 방법

2023. 6. 15. 18:27
728x90
반응형

MySQL에서 트리거(Trigger)는 데이터베이스의 특정 이벤트가 발생할 때 자동으로 실행되는 작업을 정의하는 객체입니다. 

트리거를 사용하면 데이터 변경 작업을 모니터링하고, 필요한 추가 작업을 자동으로 수행할 수 있습니다. 

 

다음은 MySQL 트리거에 대한 자세한 설명과 예시입니다:

1. 트리거의 개념:
   - 트리거는 데이터베이스의 특정 테이블에 대한 이벤트(INSERT, UPDATE, DELETE 등)가 발생할 때 자동으로 실행되는 작업입니다.
   - 트리거는 특정 조건을 충족하는 경우에만 실행되며, 데이터 변경 작업을 모니터링하고 추가 작업을 수행할 수 있습니다.

2. 트리거의 종류:
   - MySQL에서는 세 가지 종류의 트리거를 지원합니다: BEFORE, AFTER, INSTEAD OF 트리거.
   - BEFORE 트리거는 데이터 변경 전에 실행되는 트리거로, 변경 전의 상태를 확인하거나 수정할 수 있습니다.
   - AFTER 트리거는 데이터 변경 후에 실행되는 트리거로, 변경 후의 상태를 확인하거나 추가 작업을 수행할 수 있습니다.
   - INSTEAD OF 트리거는 뷰(View)에 대한 트리거로, 데이터 변경 작업이 뷰에 수행될 때 실행되는 작업을 정의합니다.

3. 트리거의 사용 단계:
   - 트리거를 사용하는 과정은 다음과 같습니다:
     1) 트리거를 생성하기 전에 작업할 테이블을 정의해야 합니다.
     2) `CREATE TRIGGER` 문을 사용하여 트리거를 생성합니다. 트리거는 특정 이벤트와 조건을 지정하여 정의됩니다.
     3) 트리거의 본문에서는 SQL 문을 사용하여 추가 작업을 수행합니다.

4. 예시:
   - 다음은 주문 테이블에 새로운 주문이 삽입될 때 자동으로 재고를 감소시키는 트리거의 예시입니다:

DELIMITER //

CREATE TRIGGER decrease_inventory
AFTER INSERT ON orders
FOR EACH ROW
BEGIN
    DECLARE product_id INT;
    DECLARE quantity INT;
    
    -- 주문된 상품 ID와 수량 가져오기
    SET product_id = NEW.product_id;
    SET quantity = NEW.quantity;

    -- 상품 재고 감소
    UPDATE products SET stock = stock - quantity WHERE id = product_id;
END //

DELIMITER ;


위의 예시에서는 `decrease_inventory`라는 트리거를 생성합니다.

이 트리거는 `orders` 테이블에 새로운 주문이 삽입될 때마다 실행됩니다.

트리거 본문에서는 주문된 상품의 ID와 수량을 가져와서 해당 상품의 재고를 감소시킵니다.

트리거를 사용하면 데이터베이스 작업을 자동화하고 데이터 일관성을 유지할 수 있습니다. 

특정 이벤트가 발생할 때 자동으로 추가 작업을 수행함으로써 개발자의 부담을 줄일 수 있습니다.

728x90
반응형

'SQL > MYSQL' 카테고리의 다른 글

[MYSQL] 스크립트 언어 개요와 HTML 문법에 대해  (0) 2023.06.27
[MYSQL] 웹 사이트 개발 환경 구축에 대해  (0) 2023.06.27
[MYSQL] 파티션  (0) 2023.06.27
[MYSQL] 전체 텍스트 검색 방법  (0) 2023.06.19
[MYSQL] 커서 사용 방법  (0) 2023.06.15
[MYSQL] 스토어드 함수 사용 방법  (0) 2023.06.15
[MYSQL] 스토어드 프로시저 사용 방법  (0) 2023.06.15
[MYSQL] 인덱스가 필요한 경우와 필요 없는 경우  (0) 2023.06.15
    'SQL/MYSQL' 카테고리의 다른 글
    • [MYSQL] 파티션
    • [MYSQL] 전체 텍스트 검색 방법
    • [MYSQL] 커서 사용 방법
    • [MYSQL] 스토어드 함수 사용 방법
    Ant_U
    Ant_U

    티스토리툴바