我在表格中有一个产品列表,我想创建一个触发器来读取特定产品的库存,然后如果库存少于 5 则显示一条消息。这个概念很简单。
这是我到目前为止所拥有的。
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 的产品列表?我对甲骨文很陌生。非常感谢。
谢谢