Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

T-sql как вычесть значение одной таблицы из другой

-_-пупкинс_- Ученик (176), на голосовании 1 год назад
Вот у меня такая проблема, есть две таблицы Remains и Realization в обеих есть столбец в котором указано кол-во предметов, у предметов будут одинаковые наименования. Я хочу сделать так чтобы когда в Realization появлялась запись, в Remains кол-во предметов уменьшилось на то кол-во которое было указано в записи добавленной в Realization.
Дополнен 2 года назад
Вопрос в том как уменьшить значение кол-во в Remains
Голосование за лучший ответ
G Мыслитель (5876) 2 года назад
Для таких случаев обычно используют процедуры. Оформили продажу - вызвали в БД процедуру, которая сделает внутри одной транзакции, примерно такого вида:
begin transaction
--1
INSERT INTO Realization (product_id, date,..., count)
VALUES (prod_id, @sell_date,..., valueX)
--2
UPDATE TABLE Remains (id, modify_date,...., count)
SET count = count - valueX,
modify_date=@sell_date where id = prod_id
end transaction.

И если какая-то из операций навернётся, если, например, в момент оформления отключили ПК/сеть/что-то ещё, то не будет ситуации, что остатки убыли, а реализации не прибыли или наоборот.

Можно и триггерами сделать, но менять триггером от одной таблицы другую - это извращение.
-_-пупкинс_-Ученик (176) 2 года назад
Сейчас попробую
-_-пупкинс_-Ученик (176) 2 года назад
Возникает проблема я не понял что и куда писать я это все делаю в visual studio и там когда создаешь хранимую процедуру выглядет так
G Мыслитель (5876) В неё нужно передавать id продаваемого товара и число продаваемых учётных единиц. Поэтому @param1 - это, например, @prod_id, а @param2 - @sell_date или наоборот.
Похожие вопросы