web-dev-qa-db-ja.com

SQLServerで整数をインクリメントする

ここでのNoobの質問ですが、SQL Server 2008 R2テーブルの特定のレコードを変更するたびに、RevisionIdレコードをインクリメントしたいと思います。そのために、次の構文を使用しています。

UPDATE TheTable
SET RevisionId=(SELECT RevisionId
                FROM TheTable
                WHERE [email protected]) + 1
WHERE [email protected];

ところで、これをトリガーに入れて、これが自動的に行われるようにしますが、このコードは機能しますが、かなり不格好に感じます。これを行うためのよりクリーンな方法はありますか?

17
Ana Betts

内部選択は必要ありません:

UPDATE TheTable SET RevisionId = RevisionId + 1 WHERE [email protected]
42
Mark Byers

これは、フィールドをインクリメントするためのSQLイディオムです。

UPDATE TheTable
 SET RevisionId = RevisionId + 1
 WHERE [email protected];
12
wallyk

「行バージョン」の値を探しているだけの場合は、テーブルにTimeStamp列を追加することを検討しましたか? SQL Serverは、毎回「自動的に」更新します。あなたの側にはコードがまったくありません。それがあなたにとって重要であるならば、それらはただ順番に番号が付けられません。