我有8张桌子。一位父母和七个孩子。在while循环中,逐个从表中删除。 如果在循环期间出现任何错误,则所有事务回滚。是否可以在while循环中。
示例:
声明@Count int,@ intFlag int
开始尝试 设置@Count =(从MyTable中选择计数(ID),其中getdate() - 1和getdate()之间的[Date] 如果@Count> 0
开始 设置@intFlag = 1
开始交易
while (@intFlag <= @Count)
begin
update MyTable1
set column1 = 1
where [Date] between getdate()-1 and getdate();
update MyTable2
set column2 = 1
where [Date] between getdate()-1 and getdate();
set @intFlag = @intFlag + 1
end;
提交
端
结束尝试
开始捕捉 if @@ trancount&gt; 0回滚 结束捕获
如果在进程中发生任何错误,则回滚所有子表事务
答案 0 :(得分:1)
尝试在循环上方捕获阻塞,如下面的
BEGIN TRANSACTION
BEGIN TRY
/*
* YOUR LOOP
*/
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END CATCH