티스토리 뷰
회사 업무에서 trigger 관련 업무를 하게 되어, trigger에 대한 개념을 확인하고 간단한 실습을 해보았다.
아래 블로그를 보며 개념을 익히고 간단한 실습을 진행하였다.
트리거(Trigger)란?
테이블에 대한 이벤트에 반응해 '자동으로 실행'되는 작업을 의미한다.
테이블에 insert, update, delete 작업 발생 시 자동으로 실행되는 코드를 말한다.
어떤 트랜잭션이 일어나면 거기에 반응해서 다른 명령을 실행하게 하는 기능이다.
나는 mac 유저이고 db로 mysql, db 관리 툴로는 sequel ace 앱을 설치했다.
먼저 터미널을 실행하고 brew 명령어를 통해 mysql을 설치한다. 나는 아래와같은 명령어 순으로 진행했다.
brew -update // 먼저 brew를 업데이트 해준다.
brew install mysql
brew list // mysql이 잘 설치되었는지 목록 확인가능.
그리고 디비관리툴 sequel ace를 실행하고 로컬 테스트 디비 생성 완료. 사용법을 모르시는분은 아래 블로그 참고.
나는 아래와 같은 순서로 명령문을 실행해가며 트리거가 어떻게 동작하는지 테스트해보았다.
1. 멤버 테이블 생성
2. 멤버 데이터 insert
3. 삭제멤버 테이블 생성
4. 트리거 생성
5. 생성한 트리거 확인
6. 멤버삭제
7. 삭제멤버 테이블에 멤버데이터 insert 확인 => 트리거 정상작동 확인 완료
8. 트리거 삭제
insert into memberTBL
values ('id-1111', '홍길동', '010-1111-1111');
insert into memberTBL
values ('id-3333', '이순신', '010-3333-3333');
insert into memberTBL
values ('id-2222', '홍길순', '010-2222-2222');
select * from membertbl;
-- delete from membertbl;
create table deleteMemberTBL (
id varchar(15),
name varchar(15),
phone varchar(20),
deleteDate date
);
DELIMITER //
CREATE TRIGGER trg_deleteMemberTBL
AFTER DELETE
ON memberTBL
FOR EACH ROW
BEGIN
INSERT INTO deleteMemberTBL VALUES (
OLD.ID, OLD.NAME, OLD.PHONE, CURDATE()
);
END//
DELIMITER;
SHOW TRIGGERS;
/* DELETE FROM MEMBERTBL WHERE NAME = '이순신'; */
select * from deleteMembertbl;
-- DROP TRIGGER [트리거명];
-- drop trigger trg_deleteMemberTBL;
트리거에 대한 기본 개념은 알았는데, 실제 내가 받은 트리거 코드를 보니 함수로 동작하고있으며 그 return 값으로 trigger가 지정되어있다. 그래서 먼저 function 에 대해서 살펴보아야 할 필요성을 느꼈다.
업무에서는 MariaDB 와 Postgresql 을 사용한다. Postgresql function 개발 및 예제에 대해 참고한 블로그이다.
그리고 실제로 내가 적용할 수 있는 방법은 아래 글에서 찾았다.
trigger용 stored function
트리거 성능에 관하여
'ALL > Database' 카테고리의 다른 글
[Book] 친절한 SQL 튜닝 - SQL 처리 과정과 I/O - 데이터 저장 구조 및 I/O 메커니즘 (0) | 2023.05.08 |
---|---|
[Book] 친절한 SQL 튜닝 - SQL 처리 과정과 I/0 - SQL 공유 및 재사용 (0) | 2023.05.08 |
[Book] 친절한 SQL 튜닝 - SQL 처리 과정과 I/0 - SQL 파싱과 최적화 (0) | 2023.05.08 |
인덱스와 오라클 힌트(hint) (0) | 2023.04.19 |
인덱스(Index) 특징, 성능과 관련하여 (0) | 2022.12.13 |
- Total
- Today
- Yesterday
- 한입크기로 잘라먹는 리액트
- Spark
- 리액트
- security
- node
- 데브캠프
- 코드로 배우는 스프링 웹 프로젝트
- di
- spring
- 스프링
- 객체지향
- 시큐리티
- EC2
- 남궁성
- 인덱스
- Node.js
- 스프링 빈
- 친절한SQL튜닝
- 스프링 프로젝트
- @Configuration
- 이정환
- AWS
- 데이터베이스
- 자바의정석
- 컨테이너
- 스프링의정석
- React
- JavaScript
- 자바스크립트
- MySQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |