MySQL [MySQL] 트리거(Trigger)의 활용

2023.07.19 23:15

졸리운_곰 조회 수:1661

[MySQL] 트리거(Trigger)의 활용

트리거(Trigger)란 특정 조건이 만족하면 저절로 실행되는 일종의 장치라고 볼 수 있다. 이녀석은 프로시저(Procedure)나 펑션(function)과 다르게 한번 설정을 하면 동작을 항상 감시하고 있다가 조건에 해당하는 동작이 수행되는 순간 실행되는 특징을 가지고 있다.

​

기본 구조

DELIMITER $$ CREATE TRIGGER trigger_name {BEFORE | AFTER} {INSERT | UPDATE| DELETE } ON table_name FOR EACH ROW BEGIN -- 트리거 내용 END DELIMITER ;

종류

​

행 트리거: 테이블의 행 각각 실행된다.

문장 트리거: INSERT, DELETE, UPDATE 문에 대해서 한번만 실행된다.

​

이벤트 속성

트리거 작동 시점

- Atfer : 이벤트(조건 명령문) 발생 이후 트리거 실행

- before: 이벤트(조건 명령문) 발생 이전 트리거 실행

​

이벤트(조건 명령문)

Delete: 삭제 했을 때 트리거 실행

Insert : 삽입 했을 때 트리거 실행

Update : 삭제 했을 때 트리거 실행

​

ex)

before delete on A

A 테이블에서 데이터가 삭제 되기 전에 트리거 실행

​

after delete on B

B 테이블에서 데이터가 삭제 된 이후에 트리거 실행

​

before insert on C

C 테이블에서 데이터가 삽입 전에 트리거 실행

​

......

키워드

 

​

old

예전 데이터 즉,

delete 로 삭제 된 데이터 또는

update 로 바뀌기 전의 데이터

​

new

새 데이터 즉,

insert 로 삽입된 데이터 또는

update 로 바뀐 후의 데이터

​

표로 정리하면 다음과 같다.

이벤트

old

new

delete

O

X

insert

X

O

update

O

O

사용 가능: O

사용 불가능: X

예제

이제 트리거에 대한 개념과 속성을 이해했으니 실전으로 가보자

​

예제로 만들 트리거는 채팅 내용을 삭제 시, 해당 내용을 백업 테이블에 자동으로 백업하는 트리거를 만들 것이다.

​

​

테이블(table)

CREATE TABLE chat( id VARCHAR(32), answer VARCHAR(32) NOT NULL ); CREATE TABLE chatBackup( idBackup VARCHAR(32), answerBackup VARCHAR(32) NOT NULL );

chat 과 chatBackup 두개의 테이블이 있고

INSERT INTO chat VALUE ('pigg', '안녕'); INSERT INTO chat VALUE ('lemon', '반가워'); INSERT INTO chat VALUE ('pigg', '오늘 날씨 어때?'); INSERT INTO chat VALUE ('lemon', '날씨 좋아');

chat 테이블에만 4개의 데이터를 넣었다.

chat table

chatBackup table

​

트리거(Trigger)

DELIMITER $$ CREATE TRIGGER autoBackup BEFORE DELETE ON chat FOR EACH ROW BEGIN DECLARE idTemp VARCHAR(32); DECLARE answerTemp VARCHAR(32); SET idTemp = OLD.id; SET answerTemp = OLD.answer; INSERT INTO chatBackup VALUE (idTemp, answerTemp); END $$ DELIMITER ;

트리거를 다 작성하고

SHOW TRIGGERS;

를 통해서 정상적으로 만들어졌는지 확인할 수 있다.

SHOW TRIGGERS;

트리거가 정상적으로 만들어졌으니 테스트를 해보자.

​

트리거의 발동 조건은 chat 테이블의 테이터를 삭제했을 경우다.

(BEFORE DELETE ON chat)

DELETE FROM chat WHERE id='pigg';

pigg 의 모든 데이터(채팅)을 삭제하도록 하겠다.

​

SELECT * FROM chat;

chat table

chat 테이블에서는 정상적으로 삭제했다.

​

이제 트리거 결과를 확인해보자.

​

트리거 결과

​

트리거로 건들었던 chatBackup 테이블을 확이해보면 트리거가 정상적으로 작동되었는지 확인할 수 있다.

SELECT * FROM chatbackup;

chatbackup

​

chat 테이블에서 삭제했던 데이터가 트리거로 인해서 chatBackup 테이블에 자동으로 백업된 것을 확인할 수 있다.

​

트리거 활용하기

이렇게 트리거는 임시 저장, 데이터 복구, 채팅 로그 등 다양한 곳에 활용이 가능하다!

예를 계정을 해킹 당해서 아이템을 털리는 경우가 있다. 트리거를 활용하여 해당 아이템의 이동 경로를 기록해 놓는다면 해킹으로 인해 잃은 아이템을 복구할 수 있다.

 

[출처] https://m.blog.naver.com/alcmskfl17/221859839012

 

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

[MySQL] 트리거(Trigger)의 활용

트리거(Trigger)란 특정 조건이 만족하면 저절로 실행되는 일종의 장치라고 볼 수 있다. 이녀석은 프로시저(Procedure)나 펑션(function)과 다르게 한번 설정을 하면 동작을 항상 감시하고 있다가 조건에 해당하는 동작이 수행되는 순간 실행되는 특징을 가지고 있다.

​

기본 구조

DELIMITER $$ CREATE TRIGGER trigger_name {BEFORE | AFTER} {INSERT | UPDATE| DELETE } ON table_name FOR EACH ROW BEGIN -- 트리거 내용 END DELIMITER ;

종류

​

행 트리거: 테이블의 행 각각 실행된다.

문장 트리거: INSERT, DELETE, UPDATE 문에 대해서 한번만 실행된다.

​

이벤트 속성

트리거 작동 시점

- Atfer : 이벤트(조건 명령문) 발생 이후 트리거 실행

- before: 이벤트(조건 명령문) 발생 이전 트리거 실행

​

이벤트(조건 명령문)

Delete: 삭제 했을 때 트리거 실행

Insert : 삽입 했을 때 트리거 실행

Update : 삭제 했을 때 트리거 실행

​

ex)

before delete on A

A 테이블에서 데이터가 삭제 되기 전에 트리거 실행

​

after delete on B

B 테이블에서 데이터가 삭제 된 이후에 트리거 실행

​

before insert on C

C 테이블에서 데이터가 삽입 전에 트리거 실행

​

......

키워드

 

​

old

예전 데이터 즉,

delete 로 삭제 된 데이터 또는

update 로 바뀌기 전의 데이터

​

new

새 데이터 즉,

insert 로 삽입된 데이터 또는

update 로 바뀐 후의 데이터

​

표로 정리하면 다음과 같다.

이벤트

old

new

delete

O

X

insert

X

O

update

O

O

사용 가능: O

사용 불가능: X

예제

이제 트리거에 대한 개념과 속성을 이해했으니 실전으로 가보자

​

예제로 만들 트리거는 채팅 내용을 삭제 시, 해당 내용을 백업 테이블에 자동으로 백업하는 트리거를 만들 것이다.

​

​

테이블(table)

CREATE TABLE chat( id VARCHAR(32), answer VARCHAR(32) NOT NULL ); CREATE TABLE chatBackup( idBackup VARCHAR(32), answerBackup VARCHAR(32) NOT NULL );

chat 과 chatBackup 두개의 테이블이 있고

INSERT INTO chat VALUE ('pigg', '안녕'); INSERT INTO chat VALUE ('lemon', '반가워'); INSERT INTO chat VALUE ('pigg', '오늘 날씨 어때?'); INSERT INTO chat VALUE ('lemon', '날씨 좋아');

chat 테이블에만 4개의 데이터를 넣었다.

chat table

chatBackup table

​

트리거(Trigger)

DELIMITER $$ CREATE TRIGGER autoBackup BEFORE DELETE ON chat FOR EACH ROW BEGIN DECLARE idTemp VARCHAR(32); DECLARE answerTemp VARCHAR(32); SET idTemp = OLD.id; SET answerTemp = OLD.answer; INSERT INTO chatBackup VALUE (idTemp, answerTemp); END $$ DELIMITER ;

트리거를 다 작성하고

SHOW TRIGGERS;

를 통해서 정상적으로 만들어졌는지 확인할 수 있다.

SHOW TRIGGERS;

트리거가 정상적으로 만들어졌으니 테스트를 해보자.

​

트리거의 발동 조건은 chat 테이블의 테이터를 삭제했을 경우다.

(BEFORE DELETE ON chat)

DELETE FROM chat WHERE id='pigg';

pigg 의 모든 데이터(채팅)을 삭제하도록 하겠다.

​

SELECT * FROM chat;

chat table

chat 테이블에서는 정상적으로 삭제했다.

​

이제 트리거 결과를 확인해보자.

​

트리거 결과

​

트리거로 건들었던 chatBackup 테이블을 확이해보면 트리거가 정상적으로 작동되었는지 확인할 수 있다.

SELECT * FROM chatbackup;

chatbackup

​

chat 테이블에서 삭제했던 데이터가 트리거로 인해서 chatBackup 테이블에 자동으로 백업된 것을 확인할 수 있다.

​

트리거 활용하기

이렇게 트리거는 임시 저장, 데이터 복구, 채팅 로그 등 다양한 곳에 활용이 가능하다!

예를 계정을 해킹 당해서 아이템을 털리는 경우가 있다. 트리거를 활용하여 해당 아이템의 이동 경로를 기록해 놓는다면 해킹으로 인해 잃은 아이템을 복구할 수 있다.

 

[출처] https://m.blog.naver.com/alcmskfl17/221859839012

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 오라클 기본 샘플 데이터베이스 졸리운_곰 2014.01.02 96443
공지 [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE 가을의 곰을... 2013.02.10 87153
공지 [G_SQL] Sample Database 가을의 곰을... 2012.05.20 103994
92 [통계 R 언어] R에서 DB 사용(Sqlite) file 졸리운_곰 2024.06.25 1631
91 [통계 R 언어] R 언어에서 Python 코드 호출 : Calling Python from R 졸리운_곰 2024.01.28 1819
90 [R lang 크롤링] 비트코인(암호화폐) 가격 불러오기 in R 졸리운_곰 2023.12.11 1339
89 [통계 R 언어] 이동평균이 표시된 plotly 동적 주가 그래프 in R file 졸리운_곰 2023.12.11 1139
88 [R lang 크롤링] 금융 데이터 분석 주가 데이터 가져오기 in R 졸리운_곰 2023.12.11 1349
87 [R lang 크롤링] (R) [전략적가치투자] - 증액 투자법 file 졸리운_곰 2023.12.10 1182
86 [R lang 크롤링] (R) [전략적가치투자] - 정액 투자법 file 졸리운_곰 2023.12.10 1780
85 [R lang 크롤링] (R) [전략적가치투자] - 매입 보유법, 정률 투자법, 변율 투자법 file 졸리운_곰 2023.12.10 961
84 [R lang 크롤링] (R) wordcloud2로 더 예쁘게 시각화하기 file 졸리운_곰 2023.12.10 1852
83 [R lang 크롤링] (R) 나만의 주식차트만들기 / quantmod 패키지(2) file 졸리운_곰 2023.12.10 973
82 [R lang 크롤링] (R) R에서 주가정보 가져오기 / quantmod 패키지(1) file 졸리운_곰 2023.12.10 1196
81 [R lang 크롤링] (R) 정규식에서 사용되는 주요 기호들과 의미 file 졸리운_곰 2023.12.10 1611
80 [R lang 크롤링] (R) 종목토론실 텍스트마이닝하여 시각화하기 file 졸리운_곰 2023.12.10 2426
79 [R lang 크롤링] (R) 네이버금융에서 종목토론방 크롤링 file 졸리운_곰 2023.12.10 1419
78 [통계 R 언어] [ R ] pipe operator %>% 의 의미 - magrittr 패키지 졸리운_곰 2023.12.10 1267
77 [R lang 크롤링] [R 코드] 웹사이트 크롤링 졸리운_곰 2023.12.10 1390
76 [R lang 크롤링] R - 크롤링 file 졸리운_곰 2023.12.10 1838
75 [통계 R 언어] [Rtips] 불리는 패키지가 없습니다 해결 방법 file 졸리운_곰 2023.12.10 1480
74 [통계 R 언어] 패키지 설치 에러시 ERROR configuration failed for package RCurl during installation of DESeq file 졸리운_곰 2023.12.10 1325
73 [R lang 크롤링] 최대한 친절하게 쓴 R 크롤러 만들기 file 졸리운_곰 2023.12.10 1681
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED