不加事务就是每个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
其实每一句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
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
我记得存储过程默认就是启用事务的.
---------------------对一个存储过程是一个事务,如果执行中出错,存储过程中的所有执行都会被取消,就是说你的5个删除中有一个出错的话,其他删去也不会被执行的。
其实每一句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
那么宏观上只算一个事务!