希望這是關於觸發器的許多問題中的最後一個!仍然使用Order_line實體是Order和Products之間的鏈接實體的相同數據庫。有了這個觸發器,我只想檢查當前訂單數量是否大於產品庫存。目前,我將通過使用兩個變量,Ordered(數量)和Total(庫存)並比較它們來完成此工作,但這不起作用。 如果數量大於庫存量,則必須刪除正在插入的記錄並引發錯誤。Oracle:產品庫存vs數量觸發器
CREATE OR REPLACE TRIGGER Checks_Order
BEFORE INSERT ON order_line
FOR EACH ROW
DECLARE
ordered int;
total INT;
BEGIN
SELECT ol.quantity INTO ordered FROM order_line ol WHERE
ol.product_no = :new.product_no;
if(ordered>0) then
SELECT p.stock INTO total FROM
products p WHERE p.product_no = :new.product_no;
IF (ordered < total) then
DELETE FROM order_line ol where ol.order_no = :new.order_no;
RAISE_APPLICATION_ERROR(-20103, 'Not enough stock!');
END IF;
END IF;
END;
.
run
請幫忙嗎?
當你說這是不是工作,你是什麼意思?它仍然插入行嗎?它不會拋出異常嗎? –