我正在做一些課程工作,我應該創建一個觸發器,在創建訂單之前檢查庫存水平,以查看庫存中是否有足夠的產品來滿足訂單。問題是講師沒有正確地教導我們創建觸發器的語法,我的問題是我不知道如何告訴觸發器我正在檢查的stocktable中的哪個行/列。我需要加入表格嗎?SQL:觸發語法
這是我到目前爲止的代碼(我只是即興表演在這裏,它並不真正的工作,但我把它在這裏給你的是什麼,我想acchieve一個想法):
CREATE OR REPLACE TRIGGER stock_check
BEFORE INSERT OR UPDATE OF product_quantity ON orderline
FOR EACH ROW
DECLARE
Newtotal number;
insufficient_stock exception;
BEGIN
IF(:NEW.product_quantity > product_stock.stock_quantity) then
raise insufficient_stock;
Else
:new.product_stock.stock_quantity - product_quantity = newtotal
Update stock_quantity
Set product_quantity = newtotal
END IF;
exception
when insufficient_stock then
raise_application_error(-20604,'There is not enoguh stock available');
END;
您能否定義「不真正工作」更好?你有什麼錯誤嗎?這是不是在做你期望的?它在做什麼,你期望什麼? – Ben
這全部記錄在手冊中 - 特別是關於「您正在使用哪一行」的問題):http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/triggers.htm#CIHEHBEB –
這 - http://docs.oracle.com/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm – Annjawn