Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Inserimento di righe in una tabella con una sola colonna IDENTITY

Se hai una colonna che è un'IDENTITÀ, fallo

INSERT MyTable DEFAULT VALUES;  --allows no column list. The default will be the IDENTITY
SELECT SCOPE_IDENTITY();

Se non hai identità, puoi impostarla? Questo è il modo migliore... e usa l'SQL sopra.

In caso contrario, vuoi inserire una nuova riga

INSERT MyTable (admidid)
OUTPUT INSERTED.admidid --returns result to caller
SELECT ISNULL(MAX(admidid), 0) + 1 FROM MyTable

Note:

  • Sotto carichi elevati, la soluzione MAX potrebbe non funzionare con duplicati
  • SCOPE_IDENTITY è dopo il fatto, non prima
  • SCOPE_IDENTITY funziona solo con una colonna IDENTITY. Idem qualsiasi idiozia usando IDENT_CURRENT
  • La clausola di output sostituisce SCOPE_IDENTITY per la soluzione MAX