十年

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

  對某項目進行二次開發,其中有一采購模塊,因後來有加一功能以錄入非正常流程采購之物品,因此類物品實際已經收貨,但經審核後仍處於“已審核”狀態,而不是“已收貨完成”狀態,因此客戶要求也應將此類物品狀態審核後即變為已收貨狀態。 
        要實現這樣的功能其實不難,只要在數據庫中加一觸發程序,在更新狀態為“已審核”時即自動變成“已收貨”就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

        在項目的二次開發過程中,在不修改原程序(或無法修改原程序)的情況下,合理的利用數據庫自身的強大功能,有利於快速實現和完善所需功能要求,並取得良好的效果。

posted on 2005-01-07 16:34  留不住的时光  阅读(1020)  评论(1编辑  收藏  举报