본문 바로가기
Linux&Ubuntu/DB

mariadb TRIGER 설정하기 테이블 데이터 이중으로 남기기

by Vittorio_Lee 2023. 11. 23.
728x90
반응형
SMALL

간단하게 테스트 해보겠습니다..

요즘 트리거는 안쓰긴하지만 이번에 간단하게필요로 해서 진행하였습니다. 

 

테이블 예시 

MariaDB [service]> DESC NAYA;
+--------------+-------------+------+-----+---------+----------------+
| Field        | Type        | Null | Key | Default | Extra          |
+--------------+-------------+------+-----+---------+----------------+
| num          | int(11)     | NO   | PRI | NULL    | auto_increment |
| cust         | varchar(30) | YES  |     | NULL    |                |
| di           | varchar(60) | YES  |     | NULL    |                |
| send         | varchar(20) | YES  |     | NULL    |                |
| number       | varchar(20) | YES  |     | NULL    |                |
| content      | text        | YES  |     | NULL    |                |
+--------------+-------------+------+-----+---------+----------------+
6 rows in set (0.001 sec)

이렇게 있으면 

먼저 백업 및 NAYA2.sql 테이블 만들고 복원 

# mysqldump -u root -p test NAYA> NAYA.sql

# sed 's/ NAYA/ NAYA2/g' NAYA.sql> NAYA2.sql

# mysqldump -u root -p test < NAYA2.sql 
진행

 

# show tables;
# DESSC NAYA2;
# select * from NAYA2 ; 
이와 같이 데이터가 잘있는지 확인 

이제 트리거 설정 

NAYA 테이블에 데이터 삽입 시 NAYA2 테이블에도 똑 같이 들어가며 

Insert 문만 있어 delete는 없다 즉 데이터만 들어오고 삭제되지는 않는다 .

DELIMITER //

CREATE TRIGGER tb_naya_after_insert
AFTER INSERT ON NAYA FOR EACH ROW
BEGIN
    INSERT INTO NAYA2 (cust_id, div1, send_date, phone_number, content)
    VALUES (NEW.cust_id, NEW.div1, NEW.send_date, NEW.phone_number, NEW.content);
END;

DELIMITER //

데이터 넣어보기 테스트 

INSERT INTO NAYA (cust, di, send, number, content)
VALUES ('customer123', 'divisionA', '2023-11-22', '123456789', 'Hello, World!');

실행 시 데이터가 들어가고 

SELECT * FROM NAYA WHERE cust = 'customer123';
SELECT * FROM NAYA2 WHERE cust = 'customer123';

명령어로 데이터 두테이블 모두 있는지 

DELETE FROM NAYA
WHERE cust = 'customer123' AND div = 'divisionA' AND send = '2023-11-22' AND number = '123456789' AND content = 'Hello, World!';

라는 명령어로 원본테이블 지우고 다시 또확인

SELECT * FROM NAYA WHERE cust = 'customer123';
SELECT * FROM NAYA2 WHERE cust = 'customer123';

그럼 NAYA 원본에는 없고 NAYA2 에는 여전히 있습니다. 

 

728x90
반응형
LIST