En algun momento me enfrente a una tabla en la cual se podian eliminar sus entradas, nada muy raro, solo que la forma de sacar el siguiente codigo a utilizar era la muy conocida forma del maximo mas uno.
set @last = select isnull( max([codigoBuscado]),0) + 1
Y esta , no me era muy util
declare @minimo int, @maximo int, @total int
select @minimo = isnull(min( [codigoBuscado] ),0),
@maximo = isnull(max( [codigoBuscado] ),0),
@total = isnull(count( [codigoBuscado] ),0)
from [Base_de_Datos].[propietario].[Tabla _a_buscar]
if( @total != @maximo ) begin
siguiente:
select @minimo = @minimo + 1
if exists(select * from [Tabla _a_buscar]
where [codigoBuscado] = @minimo )
goto siguiente
else
set @last = @minimo
end
else
set @last = @maximo + 1
/* es el siguiente indice vacio */
select @last