データ更新の競合を制御する考え方

Windows アプリケーションを書いていると、他ユーザーが行った変更と競合した場合っていうのを考える必要がある。

更新しようとした段階で自画面が表示のために取得したデータと現状のDBデータが変わっていたらメッセージを表示するとか、他ユーザーの変更はさっくり上書きするとか、いくつか手段はあるみたい。

もちろん Web アプリでもその必要自体はあるのだけど、やり方が違う。 Web の場合はたいてい表示画面と編集画面が明確に分かれているから、表示はただ表示すればよいし、編集は画面を表示する段階で SELECT FOR UPDATE をかけておけばよい。タイムアウトデッドロックには注意して、ね。

他ユーザーの変更に対する手段ひとつとっても同じではない。こういう、仕様としては明記されないけどアプリケーションを作る上での常識って言われそうなところって面白いけど厄介だよね。

教えてくれるひとも「当たり前だろ」みたいな言い方だし。 Windows アプリの作法は、わたしまだよく分からないのに。