Я создаю инвентарь для ресторана с помощью Microsoft SQL Server 2014. СерверSQL проверки инвентаризации запасов на вставке
Я хочу написать триггер для всякий раз, когда я ввожу новый порядок в orderDetail
таблица, таблица из инвентаря автоматически обновит как orderDetail.quantity
и stockLeft
на основе предыдущего stockLeft
в таблице, которая соответствует product_ID
.
Я очень новичок в SQL Server. Любое мнение/предложение было бы очень полезно для меня. Благодаря!!
Вот моя таблица базы данных из
Это то, что я пытался до сих пор
USE [BuffaloWildWingsDB]
GO
CREATE TRIGGER update_stock
ON orderDetail
AFTER INSERT
AS
BEGIN
DECLARE @stock INT,@productID INT, @prevDate date, @prevStock INT;
SET @stock = (SELECT quantity FROM orderDetail)
SET @productID = (SELECT product_ID FROM orderDetail)
SET @prevDate = (SELECT [date] FROM inventory WHERE inventory.product_ID = @productID AND [date] < GETDATE())
SET @prevStock = (SELECT stockLeft FROM inventory WHERE [date] = @prevDate)
INSERT INTO inventory (product_ID, outStock, stockLeft) VALUES (@productID,@stock,@[email protected]);
END
я могу запустить этот штраф запрос, но всякий раз, когда я обновляю orderDetail
с
INSERT INTO orderDetail(order_ID,product_ID, quantity) values (10101, 1013, 2)
GO
Я получил эту ошибку Msg 512, уровень 16, состояние 1, процедура update_stock, строка 14 Подзапрос возвратил более 1 значения. Это недопустимо, когда подзапрос следует =,! =, <, < =,>,> = или когда подзапрос используется как выражение. Заявление было прекращено. Любая идея?
Я обновил вопрос. Я не знаю, как сделать FUNCTION, чтобы проверить значение одного и того же product_ID в предыдущую дату. Любая помощь будет очень оценена. –