最近在学习事务,做了个小测试CREATE PROCEDURE UP_ADD
@NUM INT
AS
BEGIN
DECLARE @tb TABLE (ID int )
BEGIN TRANSACTION
WHILE (@NUM>0)
BEGIN
INSERT INTO @tb(ID) VALUES(@NUM)
IF(@@ERROR<>0)
BEGIN
ROLLBACK TRANSACTION
RETURN
end
SET @NUM=@NUM-1
END
SELECT * FROM @tb
if (@@Error>0)
begin
ROLLBack TRANSACTION --如果发生错误则回滚
end
else
begin
COMMIT TRANSACTION --没有错误则提交事务
end
END结果到没什么问题,但在关闭该窗口时,会提示“有未提交的事务。是否要在关闭窗口之前提交这些事务?”
请问这是什么原因呢?如何解决和避免它?
@NUM INT
AS
BEGIN
DECLARE @tb TABLE (ID int )
BEGIN TRANSACTION
WHILE (@NUM>0)
BEGIN
INSERT INTO @tb(ID) VALUES(@NUM)
IF(@@ERROR<>0)
BEGIN
ROLLBACK TRANSACTION
RETURN
end
SET @NUM=@NUM-1
END
SELECT * FROM @tb
if (@@Error>0)
begin
ROLLBack TRANSACTION --如果发生错误则回滚
end
else
begin
COMMIT TRANSACTION --没有错误则提交事务
end
END结果到没什么问题,但在关闭该窗口时,会提示“有未提交的事务。是否要在关闭窗口之前提交这些事务?”
请问这是什么原因呢?如何解决和避免它?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货