对某项目进行二次开发,其中有一采购模块,因后来有加一功能以录入非正常流程采购之物品,因此类物品实际已经收货,但经审核后仍处于“已审核”状态,而不是“已收货完成”状态,因此客户要求也应将此类物品状态审核后即变为已收货状态。
要实现这样的功能其实不难,只要在数据库中加一触发程序,在更新状态为“已审核”时即自动变成“已收货”就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
在项目的二次开发过程中,在不修改原程序(或无法修改原程序)的情况下,合理的利用数据库自身的强大功能,有利于快速实现和完善所需功能要求,并取得良好的效果。
