반응형
트리거(Trigger)?
Table에 어떤 신호가 가해졌을 때 미리 정해진 활동이 자동으로 실행되는 것.
구체적으로 특정 테이블에 INSERT, DELETE, UPDATE 같은 "DML"문이 수행될 때, 데이터베이스에서 자동으로 동작.
사용자호출 필요없음, 자동으로 동작!
기존 테이블
1. 테이블에 새로운 사람 가입 (INSERT 문)
INSERT INTO user_address_table VALUES ('1234', 'yoon', 'suwon');
SELECT * FROM user_address_table
2. 테이블의 내용 바꾸기 (UPDATE 문)
UPDATE user_address_table SET address = 'busan' WHERE name = 'Yoon'
반응형
3. 테이블에서 제거하기 (DELETE 문)
DELETE FROM user_address_table WHERE name = 'Yoon';
4. 제거된 사람의 데이터베이스 테이블 추가 (제거된 데이터 까지 관리)
관리를 위한 새로운 테이블을 생성함!
CREATE TABLE removedName (
ID char(8),
Name char(8),
Address char(20),
deletedDate date -- 삭제 날
);
5. 위 과정으로 트리거 생성하기!
DELIMITER //
CREATE TRIGGER check_removed_name
AFTER DELETE -- 삭제 되면 작동
ON user_address_table -- 어떤 테이블에?
FOR EACH ROW -- 각 row(행) 마다 적용
-- 테이블에 백업데이터 삽입
BEGIN
INSERT INTO removedName
VALUES (OLD.ID, OLD.Name, OLD.Address, CURDATE() );
END
// DELIMITER ;
(테스트 해보기)
이제 user_address_table의 내용을 하나 삭제해본다.
DELETE FROM user_address_table WHERE Name = 'Tom' ;
(결과) 트리거에 의해 자동으로 Tom 데이터가 removedname에 저장됨을 확인 할 수 있다.
반응형
'DB관련 > MySQL' 카테고리의 다른 글
[MySQL] MySQL 데이터베이스(DB)와 비주얼스튜디오 응용소프트웨어 연동하기 (MySQL ODBC - visual studio 2019) (0) | 2022.01.05 |
---|---|
[MySQL] DBMS Workbench Database (db) 백업 및 복원 (0) | 2022.01.04 |
[MySQL] 스토어 프로시져(Stored Procedure) 사용 방법 (SQL 함수 코딩) (0) | 2021.12.30 |
[MySQL] 뷰(view)란? 뷰 생성하기 (0) | 2021.12.30 |
[MySQL] MySQL Workbench에서 Result Grid가 보이지 않을 때. (0) | 2021.12.30 |