- 전체
- Sample DB
- database modeling
- [표준 SQL] Standard SQL
- G-SQL
- 10-Min
- ORACLE
- MS SQLserver
- MySQL
- SQLite
- postgreSQL
- 데이터아키텍처전문가 - 국가공인자격
- 데이터 분석 전문가 [ADP]
- [국가공인] SQL 개발자/전문가
- NoSQL
- hadoop
- hadoop eco system
- big data (빅데이터)
- stat(통계) R 언어
- XML DB & XQuery
- spark
- DataBase Tool
- 데이터분석 & 데이터사이언스
- Engineer Quality Management
- [기계학습] machine learning
- 데이터 수집 및 전처리
- 국가기술자격 빅데이터분석기사
- 암호화폐 (비트코인, cryptocurrency, bitcoin)
MySQL [MySQL] 트리거 (종류, 사용법, 삭제, 예제)
2023.07.19 23:17
[MySQL] 트리거 (종류, 사용법, 삭제, 예제)
종류
1) AFTER 트리거
테이블에 INSERT, UPDATE, DELETE 등의 작업이 일어났을 때 작동하는 트리거를 말한다.
2)BEFORE 트리거
테이블에 INSERT, UPDATE, DELETE 등의 작업이 일어나기 전에 작동하는 트리거를 말한다.
사용법
CREATE
[DEFINER = user]
TRIGGER trigger_name
ON tbl_name FOR EACH ROW
[trigger_order]
trigger_body
trigger_time : { BEFORE | AFTER }
trigger_event : { INSERT | UPDATE | DELETE }
trigger_order : { FOLLOWS | PRECEDES } other_trigger_name
설명)
trigger_time에서 BEFORE와 AFTER를 지정할 수 있음
trigger_event에서 INSERT/UPDATE/DELETE 중에 하나를 지정할 수 있음
trigger_order는 테이블에 여러 개의 트리거가 부착되어 있을 때, 우선순위를 지정할 수 있음
삭제
DROP TRIGGER TRIGGER명;
예제
1. AFTER 트리거
회원 테이블에 UPDATE 또는 DELETE를 시도하면 수정 또는 삭제된 데이터를 별도의 테이블에 보관하고 변경된 일자와 변경한 사람을 기록
1) 저장할 테이블을 1개 생성
USE sqlDB;
CREATE TABLE backup_userTbl;
( userID CHAR(8) NOT NULL PRIMARY KEY,
name VARCHAR(10) NOT NULL,
birthYear INT NOT NULL,
... 등등 자신의 회원 테이블에 맞게 설정
modType CHAR(6) -- 변경된 타입 / 'UPDATE' or 'DELETE'
modDate DATE, -- 변경된 날짜
mod User VARCHAR(256) -- 변경한 사용자
);
2) UPDATE 트리거 / DELETE 트리거 생성
DROP TRIGGER IF EXISTS backUserTbl_UpdateTrg;
DELIMITER //
CREATE TRIGGER backUserTbl_UpdateTrg
AFTER UPDATE
ON userTBL
FOR EACH ROW
BEGIN
INSERT INTO backup_userTbl VALUES( OLD.userID, OLD.name, ~등등 자신의 회원테이블~, 'UPDATE', CURDATE(), CURRENT_USER() );
END //
DELIMITER ;
DROP TRIGGER IF EXISTS backUserTbl_DeleteTrg;
DELIMITER //
CREATE TRIGGER backUserTbl_DeleteTrg
AFTER DELETE
ON userTBL
FOR EACH ROW
BEGIN
INSERT INTO backup_userTbl VALUES( OLD.userID, OLD.name, ~등등 자신의 회원테이블~, 'DELETE', CURDATE(), CURRENT_USER() );
END //
DELIMITER ;
2. BEFORE 트리거
값이 입력될 때, 출생년도의 데이터를 검사해서 데이터에 문제가 있으면 값을 변경시켜서 입력시킨다.
DROP TRIGGER IF EXISTS userTbl_BeforeInsertTrg;
DELIMITER //
CREATE TRIGGER userTbl_BeforeInsertTrg
BEFORE INSERT
ON userTBL
FOR EACH ROW
BEGIN
IF NEW.birthYear < 1900 THEN
SET NEW.birthYear = 0;
ELSEIF NEW.birthYear > YEAR(CURDATE()) THEN
SET NEW.birthYear = YEAR(CURDATE());
END IF;
END //
DELIMITER ;
[출처] https://sm-studymemo.tistory.com/84
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 공지 | 오라클 기본 샘플 데이터베이스 | 졸리운_곰 | 2014.01.02 | 87076 |
| 공지 | [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE | 가을의 곰을... | 2013.02.10 | 79296 |
| 공지 | [G_SQL] Sample Database | 가을의 곰을... | 2012.05.20 | 96031 |
| 13 |
[데이터 수집 및 전처리] 주식 전종목 어떻게 불러올까? 거래소 종목 불러오기
| 졸리운_곰 | 2023.12.09 | 1705 |
| 12 |
[데이터 수집 및 전처리] [Python/파이썬]네이버증권API 활용 - 회사명, 종목코드 받아오기
| 졸리운_곰 | 2023.12.08 | 1510 |
| 11 |
[데이터 수집 및 전처리] 네이버 금융(차트)에서 주가 갈무리(크롤링)하기
| 졸리운_곰 | 2023.12.08 | 1497 |
| 10 |
[데이터 수집 및 전처리] 네이버 증권에서 일봉, 주봉 데이터 가져오기
| 졸리운_곰 | 2023.12.08 | 1505 |
| 9 |
[데이터 수집 및 전처리] (놀라운) 한글 데이터 짱! AwesomeKorean_Data
| 졸리운_곰 | 2023.03.07 | 1200 |
| 8 |
[데이터 수집 및 전처리] Crawling, Scraping
| 졸리운_곰 | 2022.05.21 | 1477 |
| 7 |
[데이터분석][데이터수집 전처리] MS 엑셀(Excel)에서 UTF-8 로 된 csv 파일 가져오기
| 졸리운_곰 | 2021.09.30 | 1417 |
| 6 | 카프카 설치 시 가장 중요한 설정 4가지 | 졸리운_곰 | 2021.07.13 | 1933 |
| 5 |
Prometheus Query(PromQL) 기본 이해하기
| 졸리운_곰 | 2020.12.17 | 1416 |
| 4 |
[인프라 모니터링 오픈소스] Prometheus 를 알아보자
| 졸리운_곰 | 2020.12.17 | 1913 |
| 3 |
Prometheus + Grafana 대시보드
| 졸리운_곰 | 2020.12.17 | 2495 |
| 2 |
Grafana란?
| 졸리운_곰 | 2020.12.17 | 2166 |
| 1 | Importing wikipedia dump to MySql | 졸리운_곰 | 2020.10.04 | 2501 |

