Подтвердить что ты не робот

Приращение целого в SQL Server

Noob вопрос здесь, каждый раз, когда я изменяю определенную запись в таблице SQL Server 2008 R2, я хочу увеличить запись RevisionId; для этого я использую следующий синтаксис:

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

Btw, я собираюсь поместить это в триггер, чтобы это происходило автоматически, но пока этот код работает, он чувствует себя довольно неуклюжим - любой более чистый способ сделать это?

4b9b3361

Ответ 1

Вам не нужен внутренний выбор:

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

Ответ 2

Это идиома SQL для приращения поля:

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

Ответ 3

Если вы просто ищете значение "row version", считаете ли вы добавлением столбца TimeStamp в свою таблицу? SQL Server обновляет его для вас "автоматически" каждый раз. Никакой код с вашей стороны вообще. Они просто не будут последовательно пронумерованы, если это важно для вас.