sql >> Database >  >> RDS >> Sqlserver

Rijen invoegen in een tabel met slechts één IDENTITEIT-kolom

Als je één kolom hebt die een IDENTITEIT is, doe dit dan gewoon

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

Als je geen identiteit hebt, kun je die dan instellen? Dit is de beste manier.. en gebruik de bovenstaande SQL.

Zo niet, dan wil je een nieuwe rij invoegen

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

Opmerkingen:

  • Bij hoge belasting kan de MAX-oplossing mislukken met duplicaten
  • SCOPE_IDENTITY is na het feit, niet eerder
  • SCOPE_IDENTITY werkt alleen met een IDENTITY-kolom. Idem voor elke idiotie met IDENT_CURRENT
  • De uitvoerclausule vervangt SCOPE_IDENTITY voor de MAX-oplossing


  1. Een opzoekbesturingselement toevoegen aan een formulier in Access 2016

  2. MySQL-foutcode:1175 tijdens UPDATE in MySQL Workbench

  3. De functie lower() voor internationale tekens in postgresql

  4. Volledige lijst met door MariaDB ondersteunde sorteringen