sql >> データベース >  >> RDS >> Sqlserver

ROLLBACK TRANSACTION 要求に対応する BEGIN TRANSACTION がありません

    発生しているエラーは、開いているトランザクションがない状態でロールバックしているためです (既に コミットまたはロールバック)。ストアド プロシージャの構造をクリーンアップし、ストアド プロシージャ全体を 1 つのトランザクションとして実行してから、エラーが発生した場合はロールバックすることを検討してください。トランザクションが開いているかどうかを確認することで、ロールバックが必要かどうかをテストすることもできます:

    BEGIN TRANSACTION;
    BEGIN TRY
    
       --execute all your stored proc code here and then commit
       COMMIT;
    
    END TRY
    BEGIN CATCH
    
       --if an exception occurs execute your rollback, also test that you have had some successful transactions
       IF @@TRANCOUNT > 0 ROLLBACK;  
    
    END CATCH
      

    1. MySQLでコミットした後にロールバックする方法はありますか?

    2. 1つの列の値に基づいて重複する行を削除します

    3. MySQLコマンドライン結果の出力形式をCSVに変更します

    4. クエリ結果をSQL*Plusでフォーマットする