Si tiene una columna que es una IDENTIDAD, simplemente haga esto
INSERT MyTable DEFAULT VALUES; --allows no column list. The default will be the IDENTITY
SELECT SCOPE_IDENTITY();
Si no tiene identidad, ¿puede configurarla? Esta es la mejor manera... y usa el SQL anterior.
Si no, desea insertar una nueva fila
INSERT MyTable (admidid)
OUTPUT INSERTED.admidid --returns result to caller
SELECT ISNULL(MAX(admidid), 0) + 1 FROM MyTable
Notas:
- Bajo cargas altas, la solución MAX puede fallar con duplicados
- SCOPE_IDENTITY es después el hecho, no antes
- SCOPE_IDENTITY solo funciona con una columna IDENTITY. Lo mismo ocurre con cualquier idiotez usando IDENT_CURRENT
- La cláusula de salida reemplaza SCOPE_IDENTITY para la solución MAX