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

トランザクションは .NET または SQL Server で処理する必要がありますか?

    厳格なルールはありませんが、ビジネス層からトランザクションを制御する理由がいくつかあります:

      <リ>

      データ ストアの境界を越えた通信。トランザクションは RDBMS に対して行う必要はありません。彼らはさまざまなエンティティに反対する可能性があります.

      <リ>

      呼び出している特定のストアド プロシージャでは利用できない可能性があるビジネス ロジックに基づいて、トランザクションをロールバック/コミットする機能。

      <リ>

      単一のトランザクション内で任意の一連のクエリを呼び出す機能。これにより、トランザクション数を気にする必要もなくなります。

      <リ>

      個人的な好み:c# には、トランザクションを宣言するためのより洗練された構造があります:using ブロック。比較すると、ロールバック/コミットにジャンプするときに、ストアド プロシージャ内のトランザクションが面倒であることが常にわかりました。

    これは、開かれているトランザクションの数によって問題になる場合とそうでない場合があります (これが単一のジョブなのか、高い並行性で実行されるプロシージャなのかは明らかではありません)。オブジェクトに適用されているロックと、それらのロックが保持されている期間を確認することをお勧めします。

    検証はおそらくすべきことを心に留めておいてください ロック;データを検証してからアクションが発生するまでの間にデータが変更された場合はどうなりますか?

    ある場合 問題がある場合は、問題のプロシージャを 2 つのプロシージャに分割し、TransactionScope の外から 1 つを呼び出すことができます。 .




    1. 初心者向けのSQLNotEqual To()演算子

    2. MySQL外部キー制約が消える

    3. InnoDBMySQL5.5のTEXTとVARCHAR。それぞれをいつ使用するか

    4. PostgreSQLとMySQLの違いは何ですか?