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

Indsættelse af rækker i en tabel med kun én IDENTITY-kolonne

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


  1. Konverter String ISO-8601 dato til oracles tidsstempel datatype

  2. Oprettelse af en trigger til kun at køre, når en ny tabel oprettes

  3. Sådan installeres WordPress:Serversoftwaren

  4. Hvordan kan jeg starte PostgreSQL-server på Mac OS X?