レコードが存在する場合は更新し、存在しない場合はレコードを挿入する Upsert ストアド プロシージャを使用するのが好きです。それらがなければ、最初にレコードが存在するかどうかを調べてから、結果に基づいて呼び出す 2 つの別個のストアド プロシージャを用意する必要があります。
UpdateOrDeleteRow というストアド プロシージャを作成していた今日まで、この問題について深く考えたことはありませんでした。名前に「Or」が含まれていることに気付いた途端、私の SRP スパイダーの感覚が働き始め、アップサートは基本的に同じものであることに気付きました。
これはSRPに違反していますか? もしそうなら、それは受け入れられますか?そうでない場合は、どうすればよいですか?
SRP は OOP の原則であり、T-SQL は OOP 言語ではないことは認識していますが、原則の基礎はここでも適用されるべきだと思われます。