嘗試創建在以任何方式更新表之後運行的Oracle觸發器。我一直在谷歌搜索這一切早,與此想出了:Oracle插入或刪除或更新時觸發
CREATE OR REPLACE TRIGGER gb_qty_change
AFTER UPDATE OR INSERT OR DELETE ON F_ITEM_STORE
FOR EACH ROW
DECLARE
v_qty V_AD_ON_HAND%rowtype;
v_isbn TD_ITEM_DESCRIPTION.TD_IDENTIFIER%type;
BEGIN
delete from gb_transaction where gb_tide = :new.ITST_ITEM_TIDE_CODE;
select TD_IDENTIFIER INTO v_isbn from TD_ITEM_DESCRIPTION where TD_TIDE = :new.ITST_ITEM_TIDE_CODE;
select * INTO v_qty from V_AD_ON_HAND where ITST_ITEM_TIDE_CODE = :new.ITST_ITEM_TIDE_CODE;
insert into gb_transaction(gb_tide, gb_isbn, gb_used_on_hand, gb_new_on_hand)
values(:new.ITST_ITEM_TIDE_CODE, v_isbn, v_qty.USED_ON_HAND, v_qty.NEW_ON_HAND);
END;
/
我試圖保持它每TIDE_CODE單個記錄的新表。
V_AD_ON_HAND是一個拉取庫存盤點的視圖。 gb_transaction是我記錄這些事件的新表格
與其他人的代碼比較,它看起來應該運行,但我得到「警告:編譯錯誤時創建的觸發器」。
假設您使用的是SQL * Plus,當您收到警告(指出您的觸發器(或任何其他PL/SQL塊)有編譯錯誤)時,可以在SQL提示符處鍵入「SHOW ERRORS」以獲取編譯列表錯誤。這應該有助於確定特定的錯誤。 – 2011-03-02 18:42:23