你放一百个DELETE在一起也是一样执行的,

解决方案 »

  1.   

    不加事务就是每个delete是一个事务,要这样才是一个事务:
    create PROCEDURE clean AS
    declare @now as  datetime
    declare @t as datetime
    set @now=getdate()
    --实时数据7天
    set @t=dateadd(d,-7,@now) --实时数据7天
    SET XACT_ABORT ON
    begin transaction
    delete from realdatabak1 where inputtime <@t
    delete from realdatabak2 where inputtime <@t
    delete from realdatabak3 where inputtime <@t
    delete from realdatabak4 where inputtime <@t
    delete from realdatabak5 where inputtime <@t
    commit transaction
    SET XACT_ABORT OFF
      

  2.   

    回复人: OneGip(流浪者) ( ) 信誉:100  2004-09-16 12:40:00  得分: 0  
     
     
       我记得存储过程默认就是启用事务的.
     
     
    ---------------------对一个存储过程是一个事务,如果执行中出错,存储过程中的所有执行都会被取消,就是说你的5个删除中有一个出错的话,其他删去也不会被执行的。
      

  3.   


    其实每一句delete 都是一个事务!只不过省略而已如果SET XACT_ABORT ON
    begin transaction
    delete from realdatabak1 where inputtime <@t
    delete from realdatabak2 where inputtime <@t
    delete from realdatabak3 where inputtime <@t
    delete from realdatabak4 where inputtime <@t
    delete from realdatabak5 where inputtime <@t
    commit transaction
    SET XACT_ABORT OFF
     
    那么宏观上只算一个事务!