Добрый день У меня возникли некоторые проблемы при попытке понять этот вопрос в классе. Цель этого задания - добавить параметры для ввода данных с помощью триггеров, которые запускаются при выполнении определенных условий.
Из-за складских ограничений, инвентарь более 800 единиц должен быть отправлен на внешнее хранилище и отслеживаться отдельно. Вас попросили отслеживать, когда обновление превысит эту границу, чтобы его можно было рассмотреть на рабочих совещаниях.
Запишите триггер с именем «tgrExcessInventory» для таблицы Production.ProductInventory, чтобы убедиться, что количество не может превышать 800 единиц. Это первый шаг.
Измените триггер, созданный на шаге 1, чтобы выполнять его контрольный код, только если столбец Количество обновлен. Я успешно создал триггер, но мне сложно понять, как его изменить? Это то, что я до сих пор. Я видел несколько других постов здесь, похожих на этот вопрос, но я не видел ни одного с внесенными в него изменениями. Я чувствую, что что-то маленькое, я пропускаю. Из моего понимания мне нужно написать заявление об изменении?
CREATE TRIGGER tgrExcessInventory
on Production.ProductInventory
FOR UPDATE
AS
IF EXISTS
(SELECT 'True'
FROM Inserted i
JOIN Deleted d
ON i.productID = d.ProductID
AND i.locationID = d.LocationID
WHERE (d.quantity + i.quantity) >= 800 OR
i.quantity >=800
)Begin
RAISERROR('Cant increase supply where units would be over 800
units',16,1)
ROLLBACK TRAN
END
Затем я сделал функцию изменения
ALTER TRIGGER [Production].[tgrExcessInventory]
on [Production].[ProductInventory]
FOR UPDATE
AS
IF EXISTS
(SELECT 'True'
FROM Inserted I
JOIN Deleted D
ON i.Quantity = d.quantity
AND i.Quantity = d.Quantity
WHERE (d.quantity + i.quantity) >= 800 OR
i.quantity >=800
)Begin
RAISERROR('Cant increase supply where units would be over 800 units',16,1)
ROLLBACK TRAN
END
Кажется, работает? Я верю, что все сделал правильно. Будем благодарны за советы.