2011-09-07 66 views
1

IBM Informix Dynamic Server版本11.50.FC6Informix SQL - 這個簡單的存儲過程有什麼問題&|觸發語法?

我試圖從更新觸發器內執行一個簡單的存儲過程。當同一行中的另一個字段更新時,它們一起用於使用當前時間戳更新字段。

sp_test

id   (serial int, unique, not null, primary key)  
stat  (char(1), not null, default="A") 
add_date (date, not null, default today) 
upd_date (date, null) 

存儲過程的代碼是:

create procedure upd_row_date_proc (cid int) 
update sproc_trig_rec set upd_date = current where id = cid; 
end procedure; 

此執行罰款,並創建常規,但我想在更新實現觸發不工作。

觸發代碼:

create trigger upd_row_date_trig 
update of stat on sproc_trig_rec 
after (execute procedure upd_row_date_proc(id)); 

我已經嘗試了一大堆語法的變化,但不能讓它開始工作。

我通常在第三行的(字符上出現錯誤。這裏的錯誤代碼:

201: A syntax error has occurred. 
Error in line 3 
Near character position 0 

有人知道我在做什麼錯誤的觸發語法?在創建表格時可以定義這種類型的更新,還是需要按照上述方式完成這種更新?

感謝所有幫助

+1

它不是9.53 - 請嘗試:'SELECT DBINFO( '版本', '全')FROM 「informix的」 .systables WHERE tabid = 1'。 –

+0

IBM Informix Dynamic Server版本11.50.FC6 – CheeseConQueso

回答

2

這終於爲我工作

create trigger ken_trig 
update of stat on sproc_trig_rec 
referencing old as ken_pre_upd 
for each row (execute procedure ken_proc(ken_pre_upd.id)); 
+1

是的 - 這是一種可以解決問題的語法。這可能是你以後的事情。查看[CREATE TRIGGER](http://publib.boulder.ibm.com/infocenter/idshelp/v117/index.jsp?topic=%2Fcom.ibm.sqls.doc%2Fids_sqs_0584.htm)和後續頁面。 –

+0

好的感謝您的鏈接 – CheeseConQueso