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

Erstat identitetskolonnen fra int til bigint

Nå, det vil ikke være en hurtig og nem måde at gøre dette på, virkelig...

Min tilgang ville være denne:

  1. opret en ny tabel med identisk struktur - bortset fra ID kolonne er BIGINT IDENTITY i stedet for INT IDENTITY

    ----[ sæt din server i eksklusiv enkeltbrugertilstand her; brugeren kan ikke bruge din server fra dette tidspunkt på ]----

  2. find og deaktiver alle fremmednøglebegrænsninger, der refererer til din tabel

  3. slå SET IDENTITY_INSERT (your new table) ON

  4. indsæt rækkerne fra din gamle tabel i den nye tabel

  5. slå SET IDENTITY_INSERT (your new table) OFF

  6. slet din gamle tabel

  7. omdøb din nye tabel til det gamle tabelnavn

  8. opdater alle tabeller, der har en FK-reference til din tabel for at bruge BIGINT i stedet for INT (det burde kunne lade sig gøre med en simpel ALTER TABLE ..... ALTER COLUMN FKID BIGINT )

  9. genskabe alle udenlandske nøglerelationer igen

  10. nu kan du returnere din server til normal flerbrugerbrug igen



  1. Optimering af en simpel forespørgsel på to store tabeller

  2. Hvordan vælger man den sidste post i en tabel i SQL?

  3. Mysql kan ikke oprette forbindelse til lokal server gennem socket på Amazon EC2

  4. Seam @Transactional annotation virker ikke?