我有一個表格中的產品列表,我想創建一個觸發器來讀取特定產品的庫存,然後如果庫存小於5則顯示一條消息。這個概念非常簡單。Oracle觸發器:條件語句
這是我到目前爲止。
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的產品列表?我對oracle很新穎。非常感謝。
謝謝
感謝賈斯汀和很高興見到你身邊你已經幫助我很大去年,感謝指出這些問題,我真的不需要知道產品列表少於10,它可以用一個簡單的SQL查詢。是的,我只需要知道當前交易的數量。 –
至於觸發器,我很新,我仍然不知道什麼時候使用triger的函數或過程和光標更好。我在作業中需要回答的問題是:'3.3。確定庫存何時達到其最小現有數量,低供應量的產品必須由工作人員重新訂購,並且必須與商店的首選供應商之一一起放置。' –
如何將dbms輸出輸出到文本?我一直在閱讀假脫機程序和程序,但相當混亂 –