sql >> Databasteknik >  >> RDS >> Sqlserver

Byt ut identitetskolumnen från int till bigint

Tja, det kommer inte att vara ett snabbt och lätt sätt att göra det här, verkligen...

Mitt tillvägagångssätt skulle vara detta:

  1. skapa en ny tabell med identisk struktur - förutom ID kolumnen är BIGINT IDENTITY istället för INT IDENTITY

    ----[ sätt din server i exklusivt enanvändarläge här; användaren kan inte använda din server från denna punkt på ]----

  2. hitta och avaktivera alla begränsningar för främmande nyckel som refererar till din tabell

  3. aktivera SET IDENTITY_INSERT (your new table) ON

  4. infoga raderna från din gamla tabell i den nya tabellen

  5. stäng AV SET IDENTITY_INSERT (your new table) ON

  6. radera din gamla tabell

  7. byt namn på din nya tabell till det gamla tabellnamnet

  8. uppdatera alla tabeller som har en FK-referens till din tabell för att använda BIGINT istället för INT (det borde vara möjligt med en enkel ALTER TABLE ..... ALTER COLUMN FKID BIGINT )

  9. återskapa alla främmande nyckelrelationer igen

  10. nu kan du återställa din server till normal fleranvändaranvändning igen



  1. Fel:Nyckel ... finns inte i tabellen

  2. mysql_num_rows():det angivna argumentet är inte en giltig MySQL-resultatresurs

  3. Går det att länka till en annan databaslänk?

  4. UTL_MAIL meddelandeattribut som anropar OWA_UTIL.cellsprint-proceduren Oracle