컴공생의 발자취

[MySql] 트리거(Trigger) 사용 예제 본문

🟦 DB

[MySql] 트리거(Trigger) 사용 예제

MNY 2022. 10. 28. 13:59
728x90
반응형

 

먼저, 트리거 예제를 사용해보기에 앞서 test 테이블을 만들었다.

1. 테스트할 테이블 만들기

 

2. 테스트할 테이블 내용 넣기

test 테이블 

데이터는 다음과 같이 넣어줬다.

* 2개만 넣어줘도 확인 가능하다. *

 

 

3. 삭제된 데이터를 관리할 테이블 만들기

 

트리거를 사용해서 제거된 데이터를 관리할 것이다.

그러므로 제거된 데이터를 관리할 테이블을 만든다.

test 테이블의 Column과 똑같이 만든다.

 

4. 트리거 생성하기

DELIMITER //
CREATE TRIGGER check_removed_name
	AFTER DELETE 			-- 삭제 되면 작동
	ON test		            -- 어떤 테이블에?
    FOR EACH ROW			-- 각 row(행) 마다 적용

-- 테이블에 백업데이터 삽입
BEGIN
	INSERT INTO delete_test
		VALUES (OLD.name, OLD.age, OLD.num);
END
// DELIMITER ;

* DELIMITER은 문장을 구분해주기 위해 사용되며 입력해줘야 오류가 안난다.

OLD : 이벤트가 일어나기 이전 데이터 , NEW : 이벤트가 일어난 이후 데이터

* OLD.컬럼명 또는 NEW.컬럼명으로 사용한다.

 

5. 데이터 삭제하기

DELETE FROM test WHERE `name` like '시험' ;

* 만일 다음과 같은 오류가 뜬다면*

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column.  To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. 0.016 sec

set sql_safe_updates=0;

위와 같이 sql로 환경변수를 변경해준다. (일시적인 Safe모드 해제)

 

6. delete_tese 테이블 확인

위와 같이 나온다면 정상적으로 트리거가 작동된 것이다.

 

 

 

[MySQL] 트리거(Trigger)란? 트리거 사용 예제

트리거(Trigger)? Table에 어떤 신호가 가해졌을 때 미리 정해진 활동이 자동으로 실행되는 것. 구체적으로 특정 테이블에 INSERT, DELETE, UPDATE 같은 "DML"문이 수행될 때, 데이터베이스에서 자동으로 동

ansan-survivor.tistory.com

 

 

 

[문제해결] You are using safe update mode

에러현상Mysql에서 특정한 sql을 실행을 하는데, 아래와 같은 에러가 리턴됨. Error Code: 1175. You a...

blog.naver.com

 

 

 

데이터베이스 - 트리거(Trigger)

트리거(Trigger) - 테이블에 대한 특정 이벤트에 반응해 자동 실행되는 작업  이벤트 : INSERT, UPDATE, DELETE - 트리거 실행 시점을 이벤트 전(BEFORE)이나 이벤트 후(AFTER)로 지정하여 설정 = 활성화 시

girrr.tistory.com

 

 

[MySQL] Delimiter 란?

이번 글에서는 MySQL의 Delimiter 명령어에 대해 다뤄보겠습니다. 최근 Procedure를 정의하면서 다음과 같은 SQL문을 사용하였습니다. mysql> DELIMITER $$ mysql> CREATE PROCEDURE insert_test() -> BEGIN -> D..

devonce.tistory.com

 

728x90
반응형