Du kan ikke tilføj IDENTITY
til en eksisterende kolonne. Det kan bare ikke lade sig gøre.
Du skal oprette en ny kolonne af typen INT IDENTITY
og slip så den gamle kolonne, du ikke længere har brug for (og omdøb eventuelt den nye kolonne til det gamle navn - hvis det er nødvendigt)
Også:Jeg ville ikke gør dette i den visuelle designer - dette vil forsøge at genskabe tabellen med den nye struktur, kopiere over alle data (alle 10 millioner rækker), og slip derefter den gamle tabel.
Det er meget mere effektivt at bruge lige T-SQL-sætninger - dette vil gøre en "in-place" opdatering, ikke-destruktiv (ingen data går tabt), og det ikke skal kopiere omkring 10 millioner rækker i processen...
ALTER TABLE dbo.YourTable
ADD NewID INT IDENTITY(1,1) NOT NULL
Når du tilføjer en ny kolonne af typen INT IDENTITY
til dit bord, så vil det automatisk blive udfyldt med fortløbende tal. Du kan ikke forhindre dette i at ske, og du kan heller ikke opdatere værdierne senere.
Ingen af disse muligheder er egentlig særlig nyttige i sidste ende - du kan ende med forskellige ID-værdier... for at gøre dette rigtigt, skal du:
- opret den nye tabel i forvejen med den korrekte struktur og
IDENTITY
allerede på plads - Tænd derefter
SET IDENTITY_INSERT (yourtable) ON
på den tabel for at tillade værdier at blive indsat i identitetskolonnen - kopiér disse data fra den originale kilde
- deaktiver identitetsindsættelse igen:
SET IDENTITY_INSERT (yourtable) OFF
Kun med denne tilgang vil du være i stand til at få de samme ID'er i en IDENTITY-kolonne i din nye tabel.