2016-04-14 31 views
0

如何創建一個名爲ProductMaint的觸發器,用於在銷售和更新訂單表之後更新我的庫存中的數量.Unique Product通過統一兩行(即製造商和產品名稱) 。我如何觸發它沒有任何錯誤? 我已經做到了,但錯誤提示無效綁定變量在SQL開發人員中獲取無效綁定變量

CREATE OR REPLACE TRIGGER ProductMaint 
    AFTER INSERT ON Orders 
    FOR EACH ROW 
    WHEN(NEW.Qty >0) 
    BEGIN 
    UPDATE Products 
    SET Qtyonhand = Qtyonhand - :NEW.Qty 
    WHERE Products.Mfr =Orders.Mfr 
    AND Products.Product =Orders.Product; 
    DBMS_OUTPUT.PUT_LINE(:New.Qtyonhand);  

END; 
/
+0

插入時和之間的空間( – cableload

+0

其遵守,現在當我通過程序發出命令更新其是在說我? 錯誤報告 - ORA-04098:觸發器「S304.PRODUCTMAINT」是無效且失敗的重新驗證 04098. 00000 - 「觸發器'%s。%s'無效且重新驗證失敗」 *原因:嘗試檢索觸發器以執行並且發現 無效。也意味着編譯/授權 失敗的觸發器 *操作:選項將解析編譯/授權rization錯誤, 禁用觸發器,或放棄觸發器。 – user3591952

回答

0

使用SET DEFINE OFF其關閉的變量替換。
使用Run script (F5)命令/圖標來執行整個腳本。

SET DEFINE OFF; 
    CREATE OR REPLACE TRIGGER ProductMaint 
    AFTER INSERT ON Orders 
    FOR EACH ROW 
    WHEN(NEW.Qty >0) 
    BEGIN 
    UPDATE Products 
    SET Qtyonhand = Qtyonhand - :NEW.Qty 
    WHERE Products.Mfr =Orders.Mfr 
    AND Products.Product =Orders.Product; 
    DBMS_OUTPUT.PUT_LINE(:New.Qtyonhand);  

END; 
/
+0

謝謝你的回覆。在編譯之後,它提示我輸入綁定,然後顯示無效的綁定變量。 – user3591952

相關問題