[혼공SQL] 6주차

JISO.O·2023년 8월 20일
0

혼공학습단

목록 보기
19/19
post-thumbnail

🐤기본미션

p.363 market_db의 고객 테이블(member)에 입력된 회원의 정보가 변경될 때 변경한 사용자, 시간, 변경 전의 데이터 등을 기록하는 트리거 작성하고 인증하기

singer 테이블 생성하기

USE market_db;
CREATE TABLE singer (SELECT mem_id, mem_name, mem_number, addr FROM member);

백업 테이블 생성하기

CREATE TABLE backup_singer 
(	mem_id		CHAR(8) NOT NULL,
	mem_name	VARCHAR(10) NOT NULL,
    mem_number	INT NOT NULL,
    addr		CHAR(2) NOT NULL,
    modType		CHAR(2), 	-- 변경된 타입. '수정' 또는 '삭제'
    modDate		DATE,	-- 변경된 날짜
    modUser		VARCHAR(30)	-- 변경한 사용자
);

singer_updateTrg 트리거 만들기

DROP TRIGGER IF EXISTS singer_updateTrg;
DELIMITER $$
CREATE TRIGGER singer_updateTrg -- 트리거 이름
	AFTER UPDATE	-- 변경 후에 작동하도록 지정
    ON singer -- 트리거를 부착할 테이블
    FOR EACH ROW
BEGIN
	INSERT INTO backup_singer VALUES( OLD.mem_id, OLD.mem_name, OLD.mem_number, OLD.addr, '수정', curdate(), current_user() );
END $$
DELIMITER ;

singer_deleteTrg 트리거 만들기

DROP TRIGGER IF EXISTS singer_deleteTrg;
DELIMITER $$
CREATE TRIGGER singer_deleteTrg -- 트리거 이름
	AFTER DELETE	-- 삭제 후에 작동하도록 지정
    ON singer -- 트리거를 부착할 테이블
    FOR EACH ROW
BEGIN
	INSERT INTO backup_singer VALUES( OLD.mem_id, OLD.mem_name, OLD.mem_number, OLD.addr, '삭제', curdate(), current_user() );
END $$
DELIMITER ;

이제 데이터를 수정하고 삭제해보며 backup_singer 테이블에 잘 기록이 되는지 확인해보겠습니다.

데이터 수정 및 삭제

UPDATE singer SET addr = '영국' WHERE mem_id = 'BLK';
DELETE FROM singer WHERE mem_number>= 7;

backup_singer 테이블 확인하기

SELECT * FROM backup_singer;

! TRUNCATE TABLE은 DELETE 트리거가 작동되지 않기 때문에 백업 테이블에 기록되지 않는다.


🎊🥳혼공단 완주🥳🎊

혼공학습단 10기를 완주했다. 혼공단을 하며 하나의 목표를 가지고 많은 사람들과 같이 공부할 수 있어서 좋았다. 과제를 업로드하면 항상 혼공족장님이 정성스럽게 댓글을 달아주셔서 힘이 났다😘 이제 혼공단 11기를 기다리며 부족했던 부분을 다시 공부해봐야겠다!!

profile
미림마이스터고등학교에서 개발을 공부중인 학생입니다!

0개의 댓글