sql >> Base de Datos >  >> RDS >> Sqlserver

Insertar filas en una tabla con una sola columna IDENTIDAD

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