背景:
阅读新闻

合理利用触发器做二次开发

[日期:2005-01-08] 来源:博客园  作者:Bonny.Wong [字体: ]
  对某项目进行二次开发,其中有一采购模块,因后来有加一功能以录入非正常流程采购之物品,因此类物品实际已经收货,但经审核后仍处于“已审核”状态,而不是“已收货完成”状态,因此客户要求也应将此类物品状态审核后即变为已收货状态。 
        要实现这样的功能其实不难,只要在数据库中加一触发程序,在更新状态为“已审核”时即自动变成“已收货”就OK。程序代码如下(SQL Server):

CREATE trigger myupdate ON table1
after update                                               //更新后触发程序
as
  declare @status int,
 @rkey int,
 @quan float,
 @row int
  select @row=@@rowcount
  if @row=0
      return

  if update(status)
  begin
         select top 1 @rkey=i.rkey ,@status=i.status,@quan=(table2.quan_ord-table2.quan_recd) from inserted i,table2 where i.rkey=table2.po_ptr                     //从系统表inserted中判断是否符合条件
 if @status='已审核' and @quan=0                                 //如果符合条件就更新状态
 begin  
   update table1 set status='已收货' where rkey=@rkey
   if @@rowcount=0
   begin
    raiserror('Update error',16,1)
    Rollback Transaction
   end
 end
 
end

        在项目的二次开发过程中,在不修改原程序(或无法修改原程序)的情况下,合理的利用数据库自身的强大功能,有利于快速实现和完善所需功能要求,并取得良好的效果。
收藏 推荐 打印 | 录入:木鸟 | 阅读:
相关新闻      
本文评论   [发表评论]   全部评论 (0)
热门评论