我的SQL-Server学习曲线是从前到后的,几年后我正在努力TRANSACTION有效地使用代码。
如果COMMIT TRANSACTION没有明确说明,那么ROLLBACK TRANSACTION如果前面的代码中没有发生错误,那么事务是否会被提交?问题与如下结构有关:
USE MyDataBase;
GO
     BEGIN TRANSACTION;
        --complex query X here  
     ROLLBACK TRANSACTION; PRINT N'Rolled back the transaction.';
GO
...我认为在您不希望在前面ROLLBACK TRANSACTION的脚本中发生错误时对数据库进行更改的情况下使用- 在上面这将是。如果我想在上面明确说明,那么它应该放在哪里?XCOMMIT TRANSACTION
为了让自己更加困惑,我有以下内容 - 为什么它会回滚两次?创建 ? 时是否发生错误ROLLBACK?
USE WHAnalysis;
GO
    BEGIN TRANSACTION;
        IF @@TRANCOUNT = 1
            SELECT @@TRANCOUNT
            --do a complex query here
    ROLLBACK TRANSACTION; PRINT N'Rolled back the transaction.';
GO