Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Inserindo linhas em uma tabela com apenas uma coluna IDENTITY


Se você tiver uma coluna que é uma IDENTIDADE, faça isso
INSERT MyTable DEFAULT VALUES;  --allows no column list. The default will be the IDENTITY
SELECT SCOPE_IDENTITY();

Se você não tem identidade, então você pode configurá-la? Esta é a melhor maneira.. e use o SQL acima.

Caso contrário, você deseja inserir uma nova linha
INSERT MyTable (admidid)
OUTPUT INSERTED.admidid --returns result to caller
SELECT ISNULL(MAX(admidid), 0) + 1 FROM MyTable

Notas:
  • Sob cargas altas, a solução MAX pode falhar com duplicatas
  • SCOPE_IDENTITY é depois o fato, não antes
  • SCOPE_IDENTITY só funciona com uma coluna IDENTITY. Idem para qualquer idiotice usando IDENT_CURRENT
  • A cláusula de saída substitui SCOPE_IDENTITY pela solução MAX