У меня есть следующий фрагмент ER-диаграммы.Trigger to декремент инвентаризации
Когда «order_item» обновляется (т. Е. Когда элемент добавлен в «корзину покупок»), я хочу уменьшить «количество» в таблице «itemsinstock».
Я знаю синтаксис триггера (ну, MySQL также может генерировать его), но я не знаю, как это сделать. «order_item» необходимо прочитать ItemID из «itemsinstock» и на основе этого идентификатора, ему нужно уменьшить количество для этого конкретного элемента. Это возможно?
Edit: Это то, что я сейчас:
CREATE DEFINER=`root`@`localhost` TRIGGER
`orderdb`.`itemsinstock_AFTER_INSERT`
AFTER INSERT ON `order_item`
FOR EACH ROW
BEGIN UPDATE itemsinstock
SET Quantity = Quantity - order_item.itemQuantity WHERE itemID = ItemID; END
Это дает мне ошибку с «order_item.itemQuantity» .... Он работал с «-1», но очевидно, что я хочу, чтобы уменьшить основанный на том, сколько «itemQuantity». Как мне это сделать?
Кажется, что это работает лучше, но ваше решение имеет довольно странную проблему. Он уменьшает другие предметы, даже если они не имеют одного и того же элемента. Это довольно странно, поскольку itemID отличается? – Charles
Извините, я, кажется, скопировал ошибку из исходного кода. Элемент itemId в предложении where также должен быть проверен на NEW – e4c5
Потому что в исходном запросе, где itemid = itemid всегда истинно. Мои извинения за это не замечают. – e4c5