Hvis du har én kolonne, der er en IDENTITET, skal du bare gøre dette
INSERT MyTable DEFAULT VALUES; --allows no column list. The default will be the IDENTITY
SELECT SCOPE_IDENTITY();
Hvis du ikke har identitet, kan du så indstille den? Dette er den bedste måde.. og brug SQL ovenfor.
Hvis ikke, vil du indsætte en ny række
INSERT MyTable (admidid)
OUTPUT INSERTED.admidid --returns result to caller
SELECT ISNULL(MAX(admidid), 0) + 1 FROM MyTable
Bemærkninger:
- Under høje belastninger kan MAX-løsningen fejle med dubletter
- SCOPE_IDENTITY er efter faktum, ikke før
- SCOPE_IDENTITY fungerer kun med en IDENTITY-kolonne. Ditto enhver idioti, der bruger IDENT_CURRENT
- Outputsætningen erstatter SCOPE_IDENTITY for MAX-løsningen