テーブルに商品のリストがあります。特定の商品の手持ちの在庫を読み取るトリガーを作成し、在庫が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未満の製品のリストを表示するにはどうすればよいですか?私はオラクルにかなり慣れていません。どうもありがとう。
ありがとう