В моем ответе на это ТАК вопрос я предлагаю использовать единственный оператор вставки с выбором, который увеличивает значение, как показано ниже.
Insert Into VersionTable
(Id, VersionNumber, Title, Description, ...)
Select @ObjectId, max(VersionNumber) + 1, @Title, @Description
From VersionTable
Where Id = @ObjectId
Я предложил это, потому что я полагаю, что этот оператор безопасен с точки зрения параллелизма, в том, что, если другие вставляют для того же идентификатора объекта, выполняется одновременно, нет никакого шанса наличия дублирующихся номеров версий.
Я корректен?