2010-12-02 69 views
11

創建/替換觸發我用松鼠3.2.0 當我試圖取代這一觸發:在松鼠

CREATE OR REPLACE TRIGGER crw_ins_trig 
    BEFORE INSERT OR UPDATE ON crew 
    FOR EACH ROW 
DECLARE 

BEGIN 
    if (:new.crw_id is null) then 
     select crw_id_seq.nextval 
     into :new.crw_id 
     from dual; 
    end if; 
END; 
/

我得到的消息「請輸入參數值價值。‘新’」

當我點擊確定結果的消息是:

Warning: Warning: execution completed with warning 
SQLState: null 
ErrorCode: 17110 
Position: 27 

Query 1 of 1, Rows read: 0, Elapsed time (seconds) - Total: 0.023, SQL query: 0.023, Building output: 0 

在我的應用程序我得到一個錯誤"ORA-04098: trigger 'CRW_INS_TRIG' is invalid and failed re-validation"

這與松鼠有關嗎?如果是這樣,我該如何解決這個問題?

+0

的問題可能是宣佈並開始間的空行。也許Squirrel將前四行解釋爲CREATE TRIGGER命令(導致無效觸發),然後嘗試將BEGIN-END塊作爲匿名塊執行。 – 2010-12-07 07:05:04

回答

15

你應該在卸載松鼠「sqlparam」插件後,它不會要求你填寫值「:PARAMNAME」變量

+0

是的!它的工作原理和觸發器在Oracle中創建並生效! – Guus 2011-11-03 06:51:05

0

你可能要一個REFERENCING行添加到您的觸發器,使其看起來像

CREATE OR REPLACE TRIGGER crw_ins_trig 
    BEFORE INSERT OR UPDATE ON crew 
    REFERENCING NEW AS NEW 
       OLD AS OLD 
    FOR EACH ROW 
BEGIN 
    if (:new.crw_id is null) then 
     select crw_id_seq.nextval 
     into :new.crw_id 
     from dual; 
    end if;  
END crw_ins_trig; 

嘗試。如果它不起作用,請嘗試使用其他工具(例如SQL * Plus,PL/SQL Developer,Toad等)執行語句。

分享和享受。

+0

不做任何事情,如果你想引用新的東西,你最好將它重命名爲新的東西,比如n – Alex 2013-06-24 21:11:42