--------------------------------------- 테이블 기본 정보 -----------------------------------------
create table jepum_3(
data01 int(11) not null AUTO_INCREMENT PRIMARY key comment '제품번호',
data02 varchar(50) comment '제품명',
data03 varchar(50) comment '규격',
data04 varchar(50) comment '입고단가',
data05 varchar(50) comment '출고단가',
data06 varchar(50) default '0' comment '재고수량',
data07 varchar(50) comment '비고',
data08 varchar(50) comment '비고2',
data09 varchar(50) comment '비고3'
);

create table chang_go_3(
data01 int(11) not null AUTO_INCREMENT PRIMARY key comment '창고번호',
data02 varchar(50) comment '창고명',
data03 varchar(50) comment '창고위치',
data04 varchar(50) comment '비고',
data05 varchar(50) comment '비고2',
data06 varchar(50) comment '비고3'
);

create table geolaecheo_3(
data01 int(11) not null AUTO_INCREMENT PRIMARY key comment '거래처번호',
data02 varchar(50) comment '거래처명',
data03 varchar(50) comment '주소',
data04 varchar(50) comment '담당자명',
data05 varchar(50) comment '담당자번호',
data06 varchar(50) comment '구분',
data07 varchar(50) comment '비고',
data08 varchar(50) comment '비고2',
data09 varchar(50) comment '비고3'
);

create table gumae_3(
data01 int(11) not null AUTO_INCREMENT PRIMARY key comment '구매번호',
data02 int(11) comment '제품번호',
data03 int(11) comment '구매수량',
data04 varchar(50) comment '구매일자',
data05 int(11) comment '거래처번호',
data06 varchar(50) comment '구매상태',
data07 varchar(50) comment '입고일자',
data08 varchar(50) comment '비고',
data09 varchar(50) comment '비고2',
data10 varchar(50) comment '비고3'
);

create table panmae_3(
data01 int(11) not null AUTO_INCREMENT PRIMARY key comment '판매번호',
data02 int(11)comment '제품번호',
data03 int(11) comment '판매수량',
data04 varchar(50) comment '판매일자',
data05 int(11) comment '거래처번호',
data06 varchar(50) comment '판매상태',
data07 varchar(50) comment '출고일자',
data08 varchar(50) comment '비고',
data09 varchar(50) comment '비고2',
data10 varchar(50) comment '비고3'
);
---------------------------------------재고 조회 view-------------------------------------------------


create view jaego_view as
select jepum_3.data02, jepum_3.data03, jepum_3.data06
from jepum_3
where jepum_3.data06 > 0;

--------------------------------------트리거 활용-----------------------------------------------------
제품 판매후 재고 반영시 재고내용 업데이트 

create trigger ibgo_cont 
after update on gumae_3
for each row
begin
update jepum_3 set jepum_3.data06 = jepum_3.data06 + NEW.data03
where NEW.data06 = '재고반영' and jepum_3.data01 = NEW.data02;
end

create trigger ibgo_cont2 
after update on panmae_3
for each row
begin
update jepum_3 set jepum_3.data06 = jepum_3.data06 - NEW.data03
where NEW.data06 = '재고반영' and jepum_3.data01 = NEW.data02;
end
----------------------------------------------------------------------------------------------------------

질문 : 위와 같이 쿼리를 짤 경우 
재고반영 상태에서 다른 데이터를 수정할 경우 재고 반영이 한번더 적용되어서 재고 수량이 정확하지 않는 문제가 발생합니다
if else로 최대한 해결을 하려고 고민중이긴 한데 잘 안되네요...

혹시 다른분들은 어떤 방식으로 해결을 하실거 같나요?

ps. SQL 공부하려 하는데 책 추천 부탁드립니다
저의 수준은 정보처리 산업기사 겨우 합격할 정도 수준입니다... (올해 기사 준비중)