일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 내일배움캠프
- 99클럽
- 항해
- 국비
- 99일지
- 프로그래머스
- java
- Spring
- 운영체제
- 자바
- til
- 코딩테스트
- 스파르타내일배움캠프WIL
- 소프트웨어
- 컴퓨터개론
- Flutter
- 중심사회
- 스파르타내일배움캠프TIL
- 백준
- 개인공부
- 개발자블로그
- Python
- 컴퓨터구조론 5판
- AWS
- 스파르타내일배움캠프
- 개발자스터디
- 스파르타코딩클럽
- MySQL
- 부트캠프
- wil
- Today
- Total
컴공생의 발자취
[MySql] 트리거(Trigger) 사용 예제 본문
먼저, 트리거 예제를 사용해보기에 앞서 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
'🟦 DB' 카테고리의 다른 글
[MySQL] localhost server 생성 (1) | 2023.02.20 |
---|---|
[MySQL] Workbench 설치 (0) | 2023.02.20 |
[MySql] 홑따옴표('), 쌍따옴표("), 역슬래시(\) 삽입 (0) | 2022.12.08 |
[MySql] DBManager singleton 구현 예시 (0) | 2022.12.05 |