嗯,这样,我想为某个数据表建个触发器,该表一旦做update操作,就统计的cj列数据,对其中一行id为0的cj列更新为其他列的平均值。
操作:
1先在库中建了个存储过程
PROCEDURE Myupd()
update bqks set cj=sum(cj)/count(*) where id<>0
end PROCEDURE
2在命令窗口中执行了
CREATE TRIGGER ON bqks FOR UPDATE AS Myupd()
执行代码出错!!我晕,在sql server 中这样可没问题啊。fox我可是菜鸟,求高手帮忙
------解决方案--------------------------------------------------------
存储过程需要 数据库(DBC),自由表不支持
------解决方案--------------------------------------------------------
MODIFY procedure
PROCEDURE Myupd
update bqks set cj=(select sum(cj) from bqks)/(select count(*) from bqks) where id<>0
return .T.
ENDPROC
CREATE TRIGGER ON table1 FOR UPDATE AS Myupd()
------解决方案--------------------------------------------------------
楼主 是在DBC中吧?
建议不用VFP的DBC
------解决方案--------------------------------------------------------
2楼的代码试试吧,在VFP9下没有提示出错
------解决方案--------------------------------------------------------
提示什么?
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
- SQL code
Create Database MyData.Dbc && 建立一个数据库Create Table bqks.Dbf (Id i,cj i) && 建立一个表Create Trigger On bqks For Update As Myupd()*-- vfp6.0Procedure Myupd() Select Nvl(Avg(cj),0) As cj_avg Into Cursor t1 From bqks Where Id<>0 Update bqks Set cj=t1.cj_avg Where bqks.Id=0Endproc*-- vfp9.0*!* Procedure Myupd()*!* Update bqks Set cj=b.cj_avg From (Select Nvl(Avg(cj),0) As cj_avg From bqks Where Id<>0) b Where bqks.Id=0*!* Endproc
------解决方案--------------------------------------------------------
用代码实现吧,OR 更换数据库