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 ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )

请高手帮忙。

...全文
122 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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。
请问怎样写?
  • 打赏
  • 举报
回复
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 有错误呀

754

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧