SQL Serverは、UPDATE中に新しい値と古い値の両方をどのように返しますか?
高い同時実行中に、意味のない結果を返すクエリの問題がありました-結果は、発行されるクエリのロジックに違反しています。問題の再現にはしばらく時間がかかりました。私は再現可能な問題を数握りのT-SQLにまで掘り下げました。 注:問題が発生しているライブシステムの部分は、5つのテーブル、4つのトリガー、2つのストアドプロシージャ、および2つのビューで構成されています。実際のシステムを簡略化して、投稿された質問をはるかに扱いやすいものにしています。物事が整理され、列が削除され、ストアドプロシージャがインラインになり、ビューが共通のテーブル式に変わり、列の値が変更されました。これは長い説明ですが、これはエラーを再現するものの、理解するのが難しい場合があることを示しています。なぜ何かがそのように構造化されているのか不思議に思わないでください。私はここで、このおもちゃモデルでエラー状態が再現可能に発生する理由を理解しようとしています。 /* The idea in this system is that people are able to take days off. We create a table to hold these *"allocations"*, and declare sample data that only **1** production operator is allowed to take time off: */ IF OBJECT_ID('Allocations') IS NOT NULL DROP TABLE Allocations CREATE …