안녕하세요, 혼자 공부하는 SQL를 보고 학습한 자료를 남깁니다.
트리거란
자동으로 실행되는 것.
INSERT, UPDATE 및 DELETE 시 발생
데이터의 삭제를 방지
예를 들어, 블랙핑크를 삭제하기 전에 다른 곳에 저장을 하고 지우는 것이다.
그런데 업무적으로는 실수할 수도 있다.
이럴 때 트리거를 사용하면 된다.
테이블에 부착하는 것이다.
트리거 실습
CREATE TRIGGER 명령어를 통해서 트리거를 생성할 수 있다.
AFTER DELETE 명령어를 통해서 삭제후 작동하도록 지정할 수 있다.
ON 명령어를 통해서 트리거를 부착한 테이블을 만든다.
FOR EACH ROW 명령어를 통해서 각 행마다 적용시킨다.
BEGIN과 END 절 안에 트리거 실행시 작동되는 코도들을 살펴본다.
DELETE TRIGGER 생성을 완료하였다.
그리고 INSERT를 수행하면 트리거가 작동하지 않은 것을 볼 수 있다.
DELETE TRIGGER이기 때문이다.
자 이번에는 UPDATE를 해보겠다.
트리거가 작동하지 않은 것을 볼 수 있다.
이번에는 DELETE를 수행했다.
성공적으로 가수 그룹이 삭제된 것을 볼 수 있다.
트리거 활용
계좌 테이블을 예로 들자면,
계좌라는 중요한 정보를 누가 입력/수정/삭제했는지 알 수 없다. 나중에 계좌에 문제가 발생했을 때 원인을 파악하기 어렵다. 이럴 때를 대비해서 데이터에 입력/수정/삭제가 발생시 트리거를 자동으로 작동시켜 데이터를 변경한 사용자와 시간 등을 기록할 수 있다.
백업 테이블을 통한 트리거 예시
OLD 테이블은 조금 특별한 테이블이다.
시스템에서 갖고 있으며
예를 들어, UPDATE 트리거가 작동 시 UPDATE 이전의 정보가 잠깐 들어간다고 보면 된다.
OLD 테이블에 잠깐 들어간 이전 데이터를 백업 테이블에 INSERT하는 구문이다.
CURRENT_USER() 함수를 통해서 현재 접속한 사용자의 이름을 조회한다. 현재는 root이다.
이번에는 DELETE TRIGGER를 생성하였다.
똑같이 MOD만 변경하여서 백업 테이블에 저장하는 예제이다.
UPDATE와 DELETE를 수행하였다.
백업 테이블에 잘 저장된 것을 볼 수 있다.
백업 테이블에 트리거가 잘 작동하였다는 것을 보여주는 예제이다.
보시면 modDate에 반영일 그리고 modUser에 현재 접속한 사용자를 조회하고
모든 데이터를 백업 데이블에 저장함으로써 보안성을 보장하고
데이터의 무결성에 한층 더 다가설 수 있다.
TRUNCATE TABLE 명령어를 통해서 singer 테이블의 데이터를 전부 삭제하였다.
SELECT를 해보니 결과가 조회되지 않는다.
성공적으로 TRUNCATE 구문을 완료한 것을 볼 수 있다.
backup_singer 테이블을 통해서 백업한 데이터를 확인이 가능하다.
singer테이블의 데이터를 그대로 보유하고 있는 것을 볼 수 있다.
감사합니다.
https://www.youtube.com/watch?v=bggWVsBmKag&list=PLVsNizTWUw7GCfy5RH27cQL5MeKYnl8Pm&index=21
'SQLD' 카테고리의 다른 글
[혼자 공부하는 SQL] 파이썬과 MySQL 연동하기 (1) | 2024.10.28 |
---|---|
[혼자 공부하는 SQL] SQL과 파이썬 연결을 위한 파이썬 설치하기 (1) | 2024.10.28 |
[혼자 공부하는 SQL] 스토어드 함수와 커서의 개념, 커서(cursor)의 단계별 실습 방법 (0) | 2024.10.27 |
[혼자 공부하는 SQL] 스토어드 프로시저 사용 방법 (1) | 2024.10.27 |
[혼자 공부하는 SQL] 인덱스의 생성과 제거 문법 (CREATE INDEX, DROP INDEX) (1) | 2024.10.27 |