フォーラム投稿(ForumPosts )に対するユーザーの投票(ForumVotes )を更新するクエリを作成しています。ユーザーは上または下に投票できます(投票は1または-1になります)。この質問はユーザーの投票の変更に固有であるため、投票レコードはすでにForumVotesテーブルに存在します。
ForumPostsテーブルには各投稿の合計スコアが格納されるため、このフィールドの同期を維持する必要があります。合計スコアを再計算するには、新しい投票を追加する前に最初に古い投票を差し引く必要があるため、ユーザーの投票レコードを更新する前に古い投票を取得する必要があります。
2つのクエリでこれを実行できることはわかっていますが、(SQL Server 2008では)UPDATEが更新を実行する前に列の値を返すことが可能かどうか疑問に思っていますか?
次に例を示します。
TABLE ForumPosts (
postID bigint,
score int,
... etc
)
-- existing vote is in this table:
TABLE ForumVotes (
postFK bigint,
userFK bigint,
score int
)
ユーザーの投票を更新するための簡単なクエリ
UPDATE ForumVotes
SET score = @newVote
WHERE postFK = @postID
AND userFK = @userID
このクエリを変更して、更新前の古いスコアを返すことはできますか?