트리거로 재고 관리 for PostgreSQL13
14637 단어 PostgreSQL재고 관리트리거
트리거로 재고 관리 for PostgreSQL13
PostgreSQL13의 트리거를 사용하여 재고 증감 로직을 작성해보십시오
PostgreSQL 버전 13.2
pgAdmin4 버전 5.3
에서 시도했습니다.
트리거 사양
전표 데이터가 추가되면 상품 테이프의 재고를 줄이고 최종 업데이트 날짜를 변경합니다.
전표 데이터가 삭제되면, 상품 테이프의 재고를 늘려 최종 갱신일을 변경한다.
개념도
트리거 사양
전표 데이터가 추가되면 상품 테이프의 재고를 줄이고 최종 업데이트 날짜를 변경합니다.
전표 데이터가 삭제되면, 상품 테이프의 재고를 늘려 최종 갱신일을 변경한다.
만들 데이터베이스 이름 Inventory_Control_test
만들 테이블
상품 테이블 tbl_items
"전표 테이블"tbl_slp2
합니다.
1. 상품 테이블 작성 tbl_items
create table tbl_items (
i1_id integer primary key,
i1_name text,
i1_updd date,
i1_price integer,
i1_stk DECIMAL(18,0) NOT NULL default 0,
i1_stk2 DECIMAL(18,0) NOT NULL default 0
);
2. 전표 테이블 작성 tbl_items
create table tbl_slp2(
s2_date date ,
s2_id integer ,
s2_qty DECIMAL(18,0) NOT NULL default 0
);
3. 전표 데이터 추가 트리거 작성
전표 데이터가 추가되면 상품 테이프의 재고를 줄이고 최종 업데이트 날짜를 변경합니다.
※PostgreSQL에서는, 최초로 함수를 만든다
create function trg_slp_ins() returns trigger as $tri_term$
begin
update tbl_items
set i1_stk2 = i1_stk2 - new.s2_qty,
i1_updd = date('now')
where i1_id=new.s2_id;
return null;
end
$tri_term$ language plpgsql
※ 재고 감소 기능으로 트리거 설정
create trigger trg_slip_ins after insert on tbl_slp2
for each row execute procedure trg_slp_ins()
4. 전표 데이터 삭제의 트리거 작성
전표 품목 데이터가 삭제되면 상품 테이프의 재고가 증가하고 최종 갱신 날짜가 변경됩니다.
※PostgreSQL에서는, 최초로 함수를 만든다
create function trg_slp_del() returns trigger as $tri_term$
begin
update tbl_items
set i1_stk2 = i1_stk2 + old.s2_qty,
i1_updd = date('now')
where i1_id=old.s2_id;
return null;
end
$tri_term$ language plpgsql
※재고 증가 기능으로 트리거 설정
create trigger trg_slip_del after delete on tbl_slp2
for each row execute procedure trg_slp_del()
5. 상품의 초기 등록
insert into tbl_items values (1 , 'さかな','2021-02-01', 1234, 10,0);
insert into tbl_items values (2 , 'テレビ','2021-03-01', 2222, 20,0);
insert into tbl_items values (3 , '保管庫',current_date , 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),
(current_date,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 (current_date ,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;
트리거로 재고 관리 for SQLite3
의 PostgreSQL판입니다, SQL문의 copipe로 동작하기 때문에, 데이타베이스로의 SQL문의 쓰는 방법의 조금의 차이나, 데이타베이스 초학자의 쪽의 참고나 업무 처리로의 힌트가 되면 다행입니다.
또, 기술에 실수가 있으면, 지적해 주세요.
pgAdmin4의 이미지와 함께, 좀 더 자세한 기사는:a23note
Reference
이 문제에 관하여(트리거로 재고 관리 for PostgreSQL13), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/workword_jp/items/77dcf21d97880b30f5a5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)