Onur ERYILMAZ Ответов: 1

Можно ли этого добиться с помощью триггеров SQL server?


Привет;

Например, у меня есть 3 таблицы в базе данных SQL Server. Подобный этому; Схема Базы Данных

Когда новая строка добавляется в таблицу "OutgoingStockProducts", количество будет уменьшаться в таблице "Stock" на StockCode.
Когда строка удаляется из таблицы "OutgoingStockProducts", количество будет увеличиваться в таблице "Stock" на StockCode.

Я могу сделать это с помощью SQL-триггера.

Но как я могу это сделать; когда EntryDate установлен в таблице "OutgoingStockInfoForms", все связанные с ним количества "OutgoingStockProducts" взяты и увеличены в таблице "Stock" с помощью StockCode ?

Что я уже пробовал:

Я думаю, что этого можно достичь с помощью курсоров, но это не очень хорошее решение, и я действительно не хочу использовать курсоры.

CHill60

Вы правы - не используйте курсоры.
Для решения проблемы можно использовать триггеры.
Но это звучит так, как будто вам нужен SQL для обновления таблицы OutgoingStockProducts по количеству в таблице запасов?

1 Ответов

Рейтинг:
12

CHill60

Похоже вы знакомы с триггерами но на всякий случай вот несколько статей которые могут вам пригодиться:
Триггеры -- SQL Server[^]
Обзор триггеров базы данных SQL Server[^]
Будьте очень осторожны при написании SQL триггера[^]

Вы упомянули об использовании курсоров, но не о том, почему вы могли бы подумать, что он вам понадобится - однако все, что вам нужно сделать, это присоединиться к Inserted таблица внутри триггера ... например, что-то вроде этого, возможно

UPDATE A
SET A.Quantity = A.Quantity + C.Quantity
FROM OutgoingStockProducts A
INNER JOIN Inserted B ON A.FormID = B.FormID
INNER JOIN Stock C ON A.StockCode = C.StockCode

Если это далеко от цели, то прокомментируйте ниже, и я постараюсь помочь дальше


Onur ERYILMAZ

Во-первых, спасибо за ваш ответ.

Я хочу это сделать;
Обновление dbo.Стоковый комплект dbo.Склад.Количество += dbo.OutgoingStockProducts.Количество, где ДБО.Склад.StockCode = dbo.OutgoingStockProducts.StockCode
каждый продукт в OutgoingStockProducts, что соответствует 'Код_формы'.

Дополнительный пример;
Предположим, что "SELECT * FROM dbo.OutgoingStockProducts где FormID = 5"
возвращает 3 строки.
Все, что я хочу сделать, это увеличить dbo.Склад.Количество для этих деталей согласно dbo.OutgoingStockProducts.Количество.

Я изучаю ваш запрос и думаю, что приведенный ниже запрос может сработать?

Обновление dbo.Склад
Установите dbo.Склад.Количество += dbo.OutgoingStockProducts.Количество
От ДБО.OutgoingStockProducts
Внутреннее соединение вставлено на dbo.OutgoingStockProducts.Код_формы = вставить.Код_формы
Внутреннее соединение dbo.Акции по ДБО.OutgoingStockProducts.StockCode = dbo.Склад.StockCode

Спасибо еще раз.

CHill60

Это выглядит нормально для меня - дайте ему попробовать! :-)