Skip site navigation (1) Skip section navigation (2)

Остатки товара.

From: "vlads" <vlads(at)ngs(dot)ru>
To: pgsql-ru-general(at)postgresql(dot)org
Subject: Остатки товара.
Date: 2012-04-25 00:59:08
Message-ID: web-2209979@mx45.intranet.ru (view raw or flat)
Thread:
Lists: pgsql-ru-general
Допустим, есть справочник товаров (tovar) с двумя полями
x(Serial) и name(text)
т.е. код товара и его наименование.
А также справочник складов (sklad) с аналогичными полями:
x(Serial) и name(text)
Третий справочник: справочник операций прихода/расхода 
(oper):
x(Serial), dat(data), xtovar(int), xsklad(int) и kol(int)
где поле kol - это кол-во прихода или расхода (штук) 
товара
dat - дата операции.
а xtovar и xsklad - ссылки на коды товара и склада.
Задача такова. При добавлении строки oper система должна 
автоматически в каком-нибудь третьем справочнике хранить 
актуальные остатки товара: справочник остатков (ost)
x(Serial), xtovar(int), xsklad(int) и kol(int).

Проблема, с которой я к Вам обращаюсь: Как я понимаю - это 
работа с триггерами. Алгоритм такой:
- Триггер должен сначала понять, есть ли вообще строка в 
справочнике ost (xtovar-xsklad) и если её нету - создать 
новую с нулевой суммой.
- Ну и в существующую или в созданную новую строку 
добавить/отнять необходимую сумму товара.

Вопросов несколько:
1) Если это делают несколько пользователей - не случится 
ли так что два пользователя одновременно не найдут пару 
(xtovar-xsklad) и создадут каждый свою такую пару. И 
получится дубляж строк. Как этого избежать.
2) Как понять триггеру, что нужной строки с уникальной 
парой (xtovar-xsklad) нет, чтобы он создал.
3) Может кто то какой то другой вариант решения проблемы.

Заранее спасибо.

Responses

pgsql-ru-general by date

Next:From: Виктор ВислобоковDate: 2012-04-25 06:23:10
Subject: Re: [pgsql-ru-general] Остатки товара.
Previous:From: Sergey BurladyanDate: 2012-04-13 14:06:15
Subject: Re: аггрегатор по аггрегаторам

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group