У меня есть таблица dbo.Warehouse, которая содержит ProductID и количество и таблицу dbo.Orders, которая содержит Заказы, сделанные для каждого продукта и т. Д. Я создал триггер, который обновит таблицу Warehouse, когда новая запись будет вставлен в таблицу заказов, Однако проблема заключается в том, что при вставке новых записей все записи обновляются, а не только 1, что является новым, в основном, если у меня уже есть 2 предыдущих заказа, размещенных для ProductID 3 и 2 Orders уже размещенные для ProductID 2, не только обновленные (вычитаемые) значения ProductID 3, но также и те, которые ранее были вычтены, ProductID 2, пожалуйста, сообщите, что я могу сделать с моим кодом, чтобы сделать эту работу, спасибо.Как обновить запись в таблице, используя вычитание, когда другая таблица получает вставленную запись?
ALTER TRIGGER Trg_AI_UpdateQty ON dbo.Orders
AFTER INSERT
AS
IF EXISTS (SELECT A.ProductID, A.Qty
FROM dbo.Warehouse AS A
INNER JOIN dbo.Orders AS B ON A.ProductID = B.ProductID
WHERE B.OrderQty > A.Qty
)
BEGIN
RAISERROR ('You do not have enough Products in stock, please order more', 1, 1)
END
ELSE
BEGIN
UPDATE B
SET B.Qty = (B.Qty - A.OrderQty)
FROM dbo.Orders AS A
INNER JOIN dbo.Warehouse AS B ON A.ProductID = B.ProductID
WHERE A.ProductID = B.ProductID
END
О господи, тупые me..I следовало подумать вставленной таблицы :(спасибо мельницу Gratzy !!! это оценено. – Claudio