ASA数据库中的这个触发器为什么会出错?

690cj 2004-12-02 12:51:49
ALTER TRIGGER "up_ceiliang" BEFORE INSERT
ORDER 1 ON sjb
REFERENCING NEW AS new_name
FOR EACH ROW
// [ WHEN( search_condition ) ]
BEGIN
if(select celiang.sheng_yu-new_name.dian_jia*new_name.jin_z from celiang,new_name where celiang.chehao = new_name.che_hao) > 0 then
update celiang set
celiang.sheng_yu = round(celiang.sheng_yu-(new_name.dian_jia*new_name.jin_z),1) where
celiang.chehao = new_name.che_hao
else
update celiang set
celiang.sheng_yu = 0 where celiang.chehao = new_name.che_hao
end if
END
保存时没有问题,当在程序中触发插入事件时出现如下错误。
SQLSTATE = S0002
[Sybase][ODBC Driver][Adaptive Server Anywhere]Table or view not found: Table 'new_name' not found

No changes made to database.

INSERT INTO "sjb" ( "fyd", "che_hao", "che_xin", "huo_min", "si_ji", "rq", "sj", "mao_z", "pi_z", "jin_z", "czy", "dian_jia", "fukuan_fs", "bufeng_fuku" ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )

请高手帮忙。

...全文
53 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
690cj 2004-12-07
多谢林丁,我想表达的意思是:有a表(字段D、字段E)、b表(字段D、字段F、字段G),触发器的要求如下,当在b表中插入一条记录时如果a.E>b.F*b.G where a.D=b.D时,a.E=a.E - b.F*b.G,否则a.E = 0。
请问怎样写?
回复
callingda 2004-12-06
if(select celiang.sheng_yu-new_name.dian_jia*new_name.jin_z from celiang,new_name where celiang.chehao = new_name.che_hao) > 0 中, FROM 後面的 new_name 不對, 不可以這樣用. 在觸發器中, new_name只是相當於一個新行,而不能代表這個TABLE
回复
zhangdatou 2004-12-02
Table 'new_name' not found

table new_name 有错误呀
回复
相关推荐
发帖
数据库相关
创建于2007-09-28

734

社区成员

PowerBuilder 数据库相关
申请成为版主
帖子事件
创建了帖子
2004-12-02 12:51
社区公告
暂无公告