2012-11-07 91 views
0
CREATE TRIGGER TRG_EFMREFNO 
    BEFORE 
    INSERT ON FEEDBACK_CASE_TB 
    FOR EACH ROW 
    BEGIN 
    SELECT SEQ_EFMREFNO.NEXTVAL INTO:NEW.EFMREFNO FROM DUAL; 
    END; 

請幫助我,這是給錯誤意外的標記「CREATE TRIGGER

意外的標記 「CREATE TRIGGER TRG_EFMREFNO
BEFOR」 之後發現 「BEGIN-OF-STATEMENT」。預期標記可能包括: 「<revoke>」 .. SQLCODE = -104,SQLSTATE = 42601,DRIVER = 79年4月12日

意外的標記 「END-OF-STATEMENT」 之後發現 「END」 預期標記可能包括: 「JOIN <joined_table>」 .. SQLCODE = -104,SQLSTATE = 42601,DRIVER = 4 .12.79

請給的錯誤解決方案

+0

不,我直接使用trigeer。實際上我會爲我的項目創建數據庫。你能爲我提供任何解決方案嗎?我所有的工作都依賴於此。 – hari

回答

1

你有兩件事情會在這裏 -

1)當「;」字符是SQL語句的一部分,有必要使用一個不同的字符來終止這個陳述。我通常使用「@」。要告訴你選擇了一個不同的字符「DB2」命令,使用

db2 [email protected] 

,或者如果你想從一個文件

db2 [email protected] -f <somefile> 

2)讀取正確的方式在更新新行觸發設置別名爲新行,並使用一套條款:

CREATE TRIGGER TRG_EFMREFNO 
    BEFORE 
    INSERT ON FEEDBACK_CASE_TB 
    REFERENCING NEW AS N 
    FOR EACH ROW 
    BEGIN 
     SET N.EFMREFNO = SEQ_EFMREFNO.NEXTVAL; 
    END 
@ 

可能有其他的方式與在默認子句中使用序列創建表的語句,將完成同樣的事情:

+0

嘿它不工作它也不允許A在結束? – hari

+0

請解決我的問題這個解決方案不是wrkng .....你能提出任何解決方案嗎? – hari

+0

我不完全確定你在問什麼。我確實創建了表格和序列,並測試了這個語句。你如何運行創建觸發器語句 - 使用「db2」命令或像「控制中心」之類的GUI工具之一。不幸的是,我不能在這裏給UML上一堂課,但我可以嘗試回答DB2特有的問題和一般的SQL問題。我看不到你的圖表中有什麼,或者知道你的數據庫中有什麼表格。請記住,我不是爲IBM工作,而是在星期天上午6:00在星巴克閱讀他的電子郵件的私人DB2顧問。 –