В зависимости от того, с какой версией SQL Server вы работаете, вы можете использовать TOP или SET ROWCOUNT, чтобы ограничить UPDATE одной строкой.Примерно так будет работать:
select top 1 * from sysobjects
WHILE @@ROWCOUNT > 0
BEGIN
UPDATE TOP 1 Keys SET Key = (SELECT MAX(Key) from Keys)+1 WHERE Key is null
END
Но не идеально.Я не могу придумать другой способ обращения к дублирующимся строкам - если только это не одноразовая задача, в этом случае временно добавится столбец IDENTITY.