2013-01-16 41 views
1

我做了這個觸發:相關名「N」沒有找到

ALTER TRIGGER "isok" AFTER INSERT 
ORDER 1 ON "dba"."orderz" 
REFERENCING NEW AS N 
FOR EACH STATEMENT 
BEGIN 
    INSERT INTO comments (order_id,user_id,com_content) VALUES (N.order_id,1,'OK'); 
END 

這樣SQL Anywhere時,我救了它,但是當我想插入東西到orderz表,現在確實沒有顯示錯誤:

相關名「N」沒有找到

我的代碼可能是錯的,但我搜索的觸發器和我不知道如何解決這個問題。我想要做的就是在comments表中創建一個新行,其中新訂單的ID

有人能告訴我如何寫一個表達式來覆蓋它嗎?

回答

1

您需要

FOR EACH ROW 

如果使用STATEMENT那麼有沒有被引用的行更換

FOR EACH STATEMENT 

,由於觸發條件會只有一次,即使你插入十排在一旦。

+0

謝謝,這真的有助於:)也許你知道一個頁面,我可以訪問更多關於觸發器的明確信息?由於我的英語說得不好,他們中的很多人對我來說都很困惑。 –

+0

@Maciej首先,從閱讀你的問題和評論我認爲你對英語的掌握已經足夠好了。其次,除了Sybase SQL Anywhere手冊之外,我不知道有任何針對此特定DBMS的良好資源:[http://dcx.sybase.com/1200/en/dbusage/ptitct.html](http://dcx。 sybase.com/1200/en/dbusage/ptitct.html) –

+0

您可能想嘗試http://sqlanywhere-forum.sybase.com/這是一個專用於SQL Anywhere的Q&A站點(由SAP-Sybase運行)。 –