关于delete触发器更新不了记录的问题!(30分)

  • 主题发起人 主题发起人 lijun175165721
  • 开始时间 开始时间
L

lijun175165721

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了如下的 关于INSERT, UPDATE,delete三个触发器,INSERT, UPDATE能正常更新数据但<br>delete触发器却在删除数据时出现了问题!不能保持数据的一致性!请大家给出意见!<br> &nbsp; IF exists (select * &nbsp;from &nbsp;SysObjects where type='TR' &nbsp;and Name='Trigger_采购表')<br> &nbsp; Drop &nbsp;trigger Trigger_采购表<br>go<br>CREATE TRIGGER Trigger_采购表 &nbsp;ON [dbo].[采购表] <br>FOR INSERT, UPDATE<br>AS<br> &nbsp;Declare &nbsp; <br> &nbsp; @药品编号 int,<br> &nbsp; @年 int,<br> &nbsp; @月 int,<br> &nbsp; @入库量 int,<br> &nbsp; --@出库量 int,<br> &nbsp; @成本 numeric (18,2),<br> &nbsp; @Del_入库量 int,<br> &nbsp; @Del_成本 &nbsp;numeric (18,2),<br> &nbsp; @销售额 &nbsp; numeric (18,2),<br> &nbsp; @月初累计成本 numeric(18,2),<br> &nbsp; @月初结存数量 &nbsp;int<br> &nbsp;set &nbsp; @Del_入库量=0<br> &nbsp;set &nbsp; @Del_成本=0.00<br> &nbsp;select &nbsp;@药品编号=药品编号, @年=Year(入库日期) , @月=Month(入库日期), <br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @入库量 =入库量, @成本=应付金额<br> &nbsp;from &nbsp;inserted <br><br> &nbsp;select &nbsp;@药品编号=药品编号, @年=Year(入库日期) , @月=Month(入库日期), <br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Del_入库量 =入库量, @Del_成本=应付金额<br> &nbsp;from &nbsp;Deleted<br> &nbsp;insert into table1 select &nbsp;入库量,应付金额 from deleted<br><br>if @月=1<br>begin<br> &nbsp;if not Exists (select * from 库存明细表 &nbsp;where 药品编号=@药品编号 and 年=@年-1 and 月=12)<br> &nbsp; &nbsp;set &nbsp;@月初累计成本=0.00<br> &nbsp;else<br> &nbsp; select @月初累计成本=月末累计成本 from 库存明细表 where 药品编号=@药品编号 and 年=@年 and 月=12<br>end<br>else<br>begin &nbsp;<br> &nbsp;if not Exists (select * from 库存明细表 where 药品编号=@药品编号 and 年=@年 and 月=@月-1)<br> &nbsp; set &nbsp;@月初累计成本=0.00<br> &nbsp;else<br> &nbsp; &nbsp;select @月初累计成本=月末累计成本 from 库存明细表 where 药品编号=@药品编号 and 年=@年 and 月=@月-1<br>end<br><br>if @月=1<br>begin<br> &nbsp;if not Exists (select * from 库存明细表 where 药品编号=@药品编号 and 年=@年-1 and 月=12)<br> &nbsp; &nbsp;set &nbsp;@月初结存数量=0<br> &nbsp;else<br> &nbsp; &nbsp;select @月初结存数量=月末结存数量 from 库存明细表 where 药品编号=@药品编号 and 年=@年-1 and 月=12 &nbsp;<br>end<br>else &nbsp;<br>begin<br> &nbsp;if not Exists (select * from 库存明细表 where 药品编号=@药品编号 and 年=@年 and 月=@月-1)<br> &nbsp; &nbsp;set @月初结存数量=0<br> &nbsp;else<br> &nbsp; &nbsp;select @月初结存数量=月末结存数量 from 库存明细表 where 药品编号=@药品编号 and 年=@年 and 月=@月-1<br>end<br><br> if Not Exists(select * from 库存明细表 &nbsp;where 药品编号=@药品编号 and 年=@年 and 月=@月)<br> &nbsp;insert into 库存明细表(药品编号,年,月,本月入库累计数量,本月累计成本,月初累计成本,月末累计成本,月初结存数量,月末结存数量)<br>values(@药品编号,@年,@月,@入库量-@Del_入库量,@成本-@Del_成本,@月初累计成本,@成本+@月初累计成本-@Del_成本,@月初结存数量,@月初结存数量+@入库量-@Del_入库量)<br>else<br>Update 库存明细表 set 本月入库累计数量=本月入库累计数量+@入库量-@Del_入库量,<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;本月累计成本=本月累计成本+@成本-@Del_成本,<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;月末累计成本=月末累计成本+@成本-@Del_成本,<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;月末结存数量=月末结存数量+@入库量-@Del_入库量<br>where &nbsp;药品编号=@药品编号 and 年=@年 and 月=@月<br><br>set &nbsp; @Del_入库量=0<br>set &nbsp; @Del_成本=0.00<br><br>-- if Not Exists(select * from 库存明细表 &nbsp;where 药品编号=@药品编号 and 年=@年 and 月=@月)<br>-- &nbsp;insert into 库存明细表(药品编号,年,月,本月入库累计数量,本月累计成本,月初累计成本,月末累计成本)<br>--values(@药品编号,@年,@月,@入库量,@成本,@月初累计成本,@月初累计成本+@成本)<br>--else<br>--Update 库存明细表 set 本月入库累计数量=本月入库累计数量+@入库量,本月累计成本=本月累计成本+@成本<br>-- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;月初累计成本=@月初累计成本,<br>-- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;月末累计成本=@月初累计成本+@成本<br> &nbsp; &nbsp;<br>--where &nbsp;药品编号=@药品编号 and 年=@年 and 月=@月
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部