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

SQL Server でトランザクションをロールバックまたはコミットする方法

    幸いなことに、SQL Server のトランザクションは複数のバッチにまたがることができます (各 exec 別のバッチとして扱われます。)

    EXEC をラップできます BEGIN TRANSACTION のステートメント そして COMMIT ただし、エラーが発生した場合は、さらに一歩進んでロールバックする必要があります。

    理想的には、次のようなものが必要です:

    BEGIN TRY
        BEGIN TRANSACTION 
            exec( @sqlHeader)
            exec(@sqlTotals)
            exec(@sqlLine)
        COMMIT
    END TRY
    BEGIN CATCH
    
        IF @@TRANCOUNT > 0
            ROLLBACK
    END CATCH
      

    BEGIN TRANSACTION そして COMMIT 私はあなたがすでに精通していると信じています。 BEGIN TRY そして BEGIN CATCH ブロックは基本的に、発生したエラーをキャッチして処理するために存在します。 EXEC のいずれかが ステートメントでエラーが発生すると、コードの実行は CATCH にジャンプします ブロック。

    トランザクションをできるだけ短くしたいので、既存の SQL 構築コードはトランザクション (上記) の外にある必要があります。




    1. JavaScript/Node.jsでのSQLインジェクションの防止

    2. ANSI結合と非ANSI結合の違いは何ですか?また、どちらをお勧めしますか?

    3. Entity Framework + PostgreSqlでARRAYを使用する方法はありますか?

    4. MySQL CONCAT(string、longtext)は16進文字列になります