buy 테이블의 값을 삭제하면 product 테이블의 amount, sale_amount 값이 변경되는 트리거 생성
⭐ 변수명 설정 유의
- 트리거나 프로시저(함수) 안에서 변수를 사용하는 경우, declare를 사용하여 선선 후 변수 사용(지역변수 개념)
- 트리거나 프로시저안에서의 변수는 전역변수(@변수명)을 사용할 수 없음
- 트리거나 프로시저(함수)안에는 일반적으로 _를 사용하여 일반 칼럼과 구분함
trigger 생성
mysql> delimiter //
mysql> create trigger delete_buy before delete on buy
-> for each row
-> begin
-> declare _amount int default 0;
-> set _amount = old.amount;
-> update product set
-> amount = amount + _amount,
-> sale_amount = sale_amount - _amount
-> where name = old.product_name;
-> end //
Query OK, 0 rows affected (0.01 sec)
mysql> delimiter ;
trigger 이용 확인
mysql> delete from buy where num=16;
Query OK, 1 row affected (0.01 sec)
mysql> select * from buy;
+-----+----------+-------------------+-------+--------+---------------------+
| num | customer | product_name | price | amount | buy_date |
+-----+----------+-------------------+-------+--------+---------------------+
| 1 | 홍길동 | 폴라티셔츠 | 15000 | 3 | 2023-03-24 17:22:02 |
| 2 | 홍길순 | 에어나시 | 9000 | 5 | 2023-03-24 17:22:02 |
| 3 | 이순신 | 양털 겨울 코트 | 50000 | 1 | 2023-03-24 17:22:02 |
| 5 | 동글님 | 순면라운드 반팔티 | 15900 | 3 | 2023-03-27 09:44:58 |
| 6 | 다래 | 순면라운드 반팔티 | 15900 | 3 | 2023-03-27 09:48:31 |
| 7 | 다래 | 폴라티셔츠 | 15000 | 3 | 2023-03-27 10:32:45 |
| 8 | 졸려 | 순면라운드 반팔티 | 15900 | 5 | 2023-03-27 10:33:14 |
| 15 | 홍길동 | 에어나시 | 9000 | 3 | 2023-03-30 15:24:03 |
+-----+----------+-------------------+-------+--------+---------------------+
8 rows in set (0.00 sec)
mysql> select * from product;
+-----+------------+--------------+---------------------+--------+--------+-------------+---------------+
| num | type_a | type_b | name | price | amount | sale_amount | register_data |
+-----+------------+--------------+---------------------+--------+--------+-------------+---------------+
| 1 | 티셔츠 | 긴소매 | 폴라티셔츠 | 15000 | 50 | 0 | 2020-10-15 |
| 2 | 티셔츠 | 반소매 | 순면라운드 반팔티 | 15900 | 50 | 0 | 2020-09-15 |
| 3 | 티셔츠 | 반소매 | 순면라운드 반팔티 | 15900 | 50 | 0 | 2020-09-15 |
| 4 | 티셔츠 | 반소매 | 에어 나시 | 9000 | 50 | 0 | 2020-11-10 |
| 5 | 패션운동복 | 트레이닝상의 | 피트니스상의 | 30000 | 50 | 0 | 2020-11-05 |
| 6 | 패션운동복 | 트레이닝하의 | 피트니스하의 | 50000 | 50 | 0 | 2020-11-06 |
| 7 | 아우터 | 재킷 | 양면 롱 후리스 자켓 | 233000 | 50 | 0 | 2020-11-05 |
| 8 | 아우터 | 패딩 | 롱 패딩 점퍼 | 47400 | 50 | 0 | 2020-11-01 |
| 30 | 아우터 | 코트 | 양털 겨울 코트 | 50000 | 45 | 5 | 2020-10-31 |
+-----+------------+--------------+---------------------+--------+--------+-------------+---------------+
9 rows in set (0.00 sec)
'DB > 명령프롬프트 - mysql' 카테고리의 다른 글
[MySQL] table 생성, 데이터 입력 create, insert (0) | 2023.03.30 |
---|---|
[MySQL] trigger 생성 예제 : after insert, new (함수사용X) (0) | 2023.03.30 |
[MySQL] 트리거 trigger 예제 : after insert, new 사용 (0) | 2023.03.30 |
[MySQL] 트리거 trigger 생성, 삭제 (0) | 2023.03.30 |
[MySQL] 뷰 view 생성 예제 (0) | 2023.03.30 |