BEGIN TRAN
IF ( NOT EXISTS ( SELECT *
FROM dbo.Exchanged
WHERE LevelID = @LevelID )
)
BEGIN
SELECT @PaketID = AdvancedPacketID
FROM dbo.Award
WHERE type=@Type
IF ( @PaketID IS NULL )
BEGIN
ROLLBACK TRAN ; --要与 begintran 对应
RETURN 0 ;
END
INSERT 某个表
COMMIT TRAN ; --要与 begintran 对应
RETURN 1 ;
END
ELSE
BEGIN
ROLLBACK TRAN ; --要与 begintran 对应
RETURN 0 ;
END
说白啦, 这种常见问题就是要注意 begintran 、rollback tran、commit tran
的关系,像例子中的 这样 一 一 对应 ,@@TRANCOUNT 这个事务计数就会前后相等,
这样问题就解决啦 !