트리거로 재고 관리 for SQLite3
SQLite3 트리거를 사용하여 인벤토리 증감 로직 만들기
SQLite 버전 3.35.5.
DB Browser for SQLite, 버전 3.12.2
에서 시도했습니다.
트리거 사양
전표 데이터가 추가되면 상품 테이프의 재고를 줄이고 최종 업데이트 날짜를 변경합니다.
전표 데이터가 삭제되면, 상품 테이프의 재고를 늘려 최종 갱신일을 변경한다.
개념도
트리거 사양
전표 데이터가 추가되면 상품 테이프의 재고를 줄이고 최종 업데이트 날짜를 변경합니다.
전표 데이터가 삭제되면, 상품 테이프의 재고를 늘려 최종 갱신일을 변경한다.
만들 데이터베이스 이름 Inventory_Control_test
만들 테이블
상품 테이블 tbl_items
"전표 테이블"tbl_slp2
합니다.
1. 상품 테이블 작성 tbl_items
create table tbl_items (
i1_id integer primary key,
i1_name text,
i1_updd datetime,
i1_price integer,
i1_stk real,
i1_stk2 real
);
2. 전표 테이블 작성 tbl_items
create table tbl_slp2(
s2_date datetime ,
s2_id integer ,
s2_qty real
);
3. 전표 데이터 추가 트리거 작성
전표 데이터가 추가되면 상품 테이프의 재고를 줄이고 최종 업데이트 날짜를 변경합니다.
create trigger s2ins insert on tbl_slp2
begin
update tbl_items set i1_stk2 = i1_stk2-new.s2_qty,
i1_updd = date('now')
where i1_id = new.s2_id;
end;
4. 전표 데이터 삭제의 트리거 작성
전표 품목 데이터가 삭제되면 상품 테이프의 인벤토리를 늘리고 최종 업데이트 날짜를 변경합니다.
create trigger s2del delete on tbl_slp2
begin
update tbl_items set i1_stk2 = i1_stk2+Old.s2_qty,
i1_updd = date('now')
where i1_id = old.s2_id;
end;
5. 상품의 초기 등록
insert into tbl_items values (1 , 'さかな',date('2021-02-01'), 1234, 10,0);
insert into tbl_items values (2 , 'テレビ',date('2021-03-01'), 2222, 20,0);
insert into tbl_items values (3 , '保管庫',date('now'), 3333, 30,0);
6. 상품 재고 수를 확인
select i1_id,i1_name,i1_price,i1_updd,i1_stk,i1_stk2,(i1_stk+i1_stk2)As stk3 from tbl_items
order by i1_id;
7. "전표 데이터 추가"
상품 id 3 1
상품 id 1을 1과 2와 3을 날짜를 바꾸어 추가
SQL 문의 설명을 조금 바꾸고 두 번 실행해 보겠습니다.
INSERT INTO tbl_slp2
(s2_date,s2_id, s2_qty)
VALUES
('2021-02-02',3 , 1),
('2021-02-02',1 , 1),
('2021-03-03',1 , 2),
(date('now') ,1 , 3);
두 번째
insert into tbl_slp2 values (date('2021-02-02'),3 , 2);
insert into tbl_slp2 values (date('2021-02-02'),1 , 2);
insert into tbl_slp2 values (date('2021-03-03'),1 , 3);
insert into tbl_slp2 values (date('now') ,1 , 4);
8. 전표 데이터의 입력 내용을 확인 (수량의 합계는 18)
SELECT * FROM tbl_slp2
order by s2_date,s2_id;
9.상품 재고수를 확인 (입출하수의 합계-18)
select i1_id,i1_name,i1_price,i1_updd,i1_stk,i1_stk2,(i1_stk+i1_stk2)As stk3 from tbl_items
order by i1_id;
10. 전표 데이터의 데이터 삭제
delete from tbl_slp2 where s2_date=date('2021-03-03')
삭제의 대상이 되는 것은, 상품 id=1수량=2과 수량=3의 2행
('2021-03-03',1, 2)
('2021-03-03',1, 3)
품목 데이터 삭제 수량은 5
11. 전표 명세서 데이터의 입력 내용을 확인 (수량의 합계 13)
select * from tbl_slp2
order by s2_date,s2_id;
12.상품 재고수를 확인 (입출하수의 합계-13)
select i1_id,i1_name,i1_price,i1_updd,i1_stk,i1_stk2,(i1_stk+i1_stk2)As stk3 from tbl_items
order by i1_id;
이러한 사용방법도 업무처리에서의 힌트가 되면 다행입니다, 또, 기술에 실수가 있으면, 지적해 주십시오.
DB Browser for SQLite의 이미지와 함께 좀 더 자세한 기사는 : a23note
Reference
이 문제에 관하여(트리거로 재고 관리 for SQLite3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/workword_jp/items/481cef535d7423d7435f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)