日期:2014-05-17  浏览次数:20600 次

事故的效果
begin try
    begin tran

If @RowCnt1 > 0 
Begin
Update EnergyDataSumByYearN Set SumQty = SumQty + @Qty 
Where MeterNo = @MeterNo And MeterType = @MeterType And DAYear = @DAYear ;
End
Else
Begin
Insert EnergyDataSumByYearN(MeterNo,MeterType,DAYear,SumQty,Unit)
Select @MeterNo,@MeterType,@DAYear,@Qty,@Unit;
End

If @RowCnt2 > 0 
Begin
Update EnergyDataSumByMonthN Set SumQty = SumQty + @Qty 
Where MeterNo = @MeterNo And MeterType = @MeterType And DAYear = @DAYear And DAMonth = @DAMonth;
End
Else
Begin
Insert EnergyDataSumByMonthN(MeterNo,MeterType,DAYear,DAMonth,SumQty,Unit)
Select @MeterNo,@MeterType,@DAYear,@DAMonth,@Qty,@Unit;
End

If @RowCnt3 > 0 
Begin
Update EnergyDataSumByDayN Set SumQty = SumQty + @Qty 
Where MeterNo = @MeterNo And MeterType = @MeterType And DAYear = @DAYear And DAMonth = @DAMonth And DADay = @DADay;
End
Else
Begin
Insert EnergyDataSumByDayN(MeterNo,MeterType,DAYear,DAMonth,DADay,SumQty,Unit)
Select @MeterNo,@MeterType,@DAYear,@DAMonth,@DADay,@Qty,@Unit;
End

If @RowCnt4 > 0 
Begin
Update EnergyDataSumByHourN Set SumQty = SumQty + @Qty 
Where MeterNo = @MeterNo And MeterType = @MeterType  And  DADay = IsNull(@DAYear,'') + IsNull(@DAMonth,'') + IsNull(@DADay,'')
And DAHour = @DAHour ;
End
Else
Begin
Insert EnergyDataSumByHourN(MeterNo,MeterType,DADay,DAHour,SumQty,Unit)
Select @MeterNo,@MeterType,IsNull(@DAYear,'') + IsNull(@DAMonth,'') + IsNull(@DADay,''),@DAHour,@Qty,@Unit;
End
--Exec Usp_TransferDAListToEnergyData @MeterNo,@MeterType,@DATime,@Qty,@Unit 
   end try
   begin catch
   rollback tran    --处理失败 数据回滚
    end catch
 

问题:这个事故过程是,如果这里的几个“Insert”和“Update”方法,有一个执行不成功,那么就整个数据库回滚对吧???

大师,请您看下,这些代码有没有问题。
 

------解决方案--------------------
是的 一条有问题就会全部回滚……
------解决方案--------------------
引用:
谢谢大师,“事务处理会造成锁表等待”,对吧???        “什么隔离级别”只会锁定对应的“表中记录”的更新。


事故应该尽量简短的使用在汇总过程中,对吧?

我记得以前跟你说过的,是事务,不是事故。事务不一定会锁表,但是会加锁,但是可能是行锁、页锁。隔离级别可以粗略理解为加锁的范围和并发性的程度。事务应该包含一个完整的操作逻辑,而不能单单理解为越短越好,但是当然短的事务的确很有好处。
------解决方案--------------------
up!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
------解决方案--------------------