У меня есть список продуктов в таблице, я хотел создать триггер, который считывает запас в наличии для определенного продукта, а затем, если запас меньше 5, отобразите сообщение. концепция довольно проста.Oracle trigger: условное выражение
Вот что у меня есть.
SET SERVEROUTPUT ON
SET ECHO ON
CREATE OR REPLACE TRIGGER TRG_REORDERSTOCK
AFTER INSERT OR UPDATE OF S_QUANTITY ON STOCK_INVENTORY
FOR EACH ROW
BEGIN
IF :OLD.S_QUANTITY <= 10 THEN
DBMS_OUTPUT.PUT_LINE ('Warning: ----- product with ID (' || :OLD.BR_ID || ') has (' || :NEW.S_QUANTITY || ') units remaining, please re-order -----');
ELSE
DBMS_OUTPUT.PUT_LINE ('UPDATE COMPLETE');
END IF;
END;
/
Теперь, чтобы проверить триггер, я собираюсь обновить количество в руке для определенного продукта;
UPDATE STOCK_INVENTORY
SET S_QUANTITY = 4
WHERE BR_ID = 1
AND P_ID = 6;
И результат:
Warning: ----- product with ID (1) has (4) units remaining, please re-order -----
, что означает, что триггер работает. Однако у Stock_inventory есть несколько продуктов, уровень запасов которых меньше 10, но с условным я имею только сообщение для текущей транзакции.
вот список нескольких продуктов в Stock_inventory, это таблица компоновщиков;
SQL> SELECT * FROM STOCK_INVENTORY;
BR_ID| P_ID|S_QUANTITY
----------|----------|----------
1| 1| 10
1| 6| 4
1| 3| 30
1| 8| 24
1| 9| 18
2| 10| 9
2| 2| 10
2| 20| 15
2| 16| 17
2| 13| 20
3| 21| 15
Как показать список продуктов, количество которых меньше 10? Я довольно новичок в оракуле. Большое спасибо.
Благодаря
Thanks Justin и приятно видеть вас вокруг, вы очень помогли мне в прошлом году, спасибо, что указали эти проблемы, действительно, мне действительно не нужно знать список продуктов менее 10, это можно сделать с помощью простого sql запрос. и да, мне нужно знать только количество доступных для текущей транзакции. –
Что касается триггера, я настолько новичок, что я до сих пор не знаю, когда лучше использовать триггер функцию или процедуру и курсор. вопрос, который мне нужно ответить в моем задании, следующий: «3.3. Определите, когда запас достигнет минимального количества в руке, элемент с низким предложением должен быть повторно заказан сотрудником и должен быть помещен в один из предпочтительных поставщиков магазинов. ' –
Как бы вывести выход dbms на текст? я читал на катушках и процедурах, но довольно запутанным –