Recientemente heredé una base de datos en la que una de las tablas tiene la clave principal compuesta de valores codificados (Parte1 * 1000 + Parte2).
Normalicé esa columna, pero no puedo cambiar los valores anteriores. así que ahora tengoCómo encontrar "agujeros" en una tabla
select ID from table order by ID
ID
100001
100002
101001
...
Quiero encontrar los "agujeros" en la mesa (más precisamente, el primer "agujero" después 100000) para las nuevas filas.
Estoy usando la siguiente selección, pero ¿hay una mejor manera de hacerlo?
select /* top 1 */ ID+1 as newID from table
where ID > 100000 and
ID + 1 not in (select ID from table)
order by ID
newID
100003
101029
...
La base de datos es Microsoft SQL Server 2000. Estoy de acuerdo con el uso de extensiones de SQL.
Justo por curiosidad, ¿cuál es la motivación para encontrar estos "agujeros"? ¿Es esta una llave inteligente? –
La base de datos es para el sistema de control de acceso en mi trabajo. En la antigua base de datos Part1 era un código de la Compañía y Part2 era un código de Empleado. Si una persona cambia de compañía, se le debe emitir una nueva tarjeta. El sistema de lectura de tarjetas necesita 6 dígitos, por lo que las tarjetas nuevas comienzan en 100000, excluyendo las existentes. – pmg