Trigger 5

[MySQL] trigger 생성 예제 : update after, old, new

trigger 생성 문제 attend테이블의 co_code를 update하면 course테이블의 at_co_code 와 attend테이블의 co_code가 연결되어 있으니, co_code에 맞는 old.co_degree는 -1 / new.co_degree는 +1 되는 트리거 생성 1. update를 두번 사용하는 방법 mysql> delimiter // mysql> create trigger update_attend after update on attend -> for each row -> begin -> update course set co_degree = co_degree -1 -> where co_code = old.at_co_code; -> update course set co_degree = c..

[MySQL] trigger 생성 예제 : after insert, new (함수사용X)

1. school 데이터 베이스 - course테이블의 해당 코스의 수강인원을 집계하는 필드 생성 co_degree필드 생성 mysql> alter table course add column co_degree int default 0; 2. co_degree 필드에 해당 코스를 듣는 인원수를 집계하여 업데이트 join을 사용하지 않아도 참고가 가능한 이유 update의 구문 = course 사용가능 select의 구문 = attend 사용가능 join을 이용하는 경우, 해당테이블을 두번 가져오는 것으로 오류 발생 update course c set co_degree = (select count(a.at_num) from attend where a.at_co_code = c.co_code ) ; -- 알리..

[MySQL] 트리거 trigger 예제 : before delete, old 사용

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; ->..

[MySQL] 트리거 trigger 예제 : after insert, new 사용

트리거 생성 : buy테이블의 값이 생성되면 product테이블의 재고량, 판매량이 변동되는 트리거 생성 : insert 재고량 : amout 판매량 : sale_amount 예) 홍길동이 에어나시를 3개 구매 => 재고량 -3, 판매량 +3 mysql> drop trigger if exists insert_buy; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> delimiter // mysql> create trigger insert_buy after insert on buy -> for each row -> begin -> declare _amount int default 0; -> set _amount = new.amount; -> update p..

[MySQL] 트리거 trigger 생성, 삭제

트리거 trigger : 연쇄반응(작용) 이벤트에 반응하여 자동으로 실행되는 구문 이벤트가 발생하는 경우 데이터의 무결성(일관성)을 지켜야 하는 경우 사용 예) 재고량과 판매량을 동일하게 업데이트 해야하는 경우 이벤트 Insert : old = null / new = 입력값 (after) Delete : old = 변경전 값 / new = null (before) Update : old = 변경전 값 / new = 변경후 값 (old=before, new=after) 트리거 trigger 특징 특정 테이블에 INSERT, DELETE, UPDATE 같은 "DML"문이 수행될 때, 데이터베이스에서 자동으로 실행 사용자호출 필요없음, 자동으로 실행됨 한번 생성이 되면 중복 생성X = 삭제 후 재생성 필요 트..