sql >> Databasteknik >  >> RDS >> Sqlserver

Återställ primärnyckel (int som identitet)

Det maximala värdet för en bigint är 9,223,372,036,854,775,807 . Om du hade kommit till 8 siffror på en dag skulle du fortfarande behöva 10 dagar för att nå max. Det är ungefär 25 miljoner år.

Förutsatt att du fortfarande vill återställa kolumnen är den första frågan jag har:är ordningen på raderna viktig? Menar du litar du på det faktum att rad 1000 kommer före 1100 för till exempel kronologisk eller på annat sätt absolut ordning? Om inte är det enkelt:ta bort kolumnen och lägg till den igen. Hej presto, nya värderingar.

Om du behöver behålla ordningen måste du göra det lite mer noggrant:

  1. Lås bordet;
  2. Ändra typen så att det inte längre är automatisk ökning;
  3. Skapa en ny kolumn. Det är bäst att se till att den inte har några index för tillfället, eftersom uppdateringen av indexet kommer att sakta långsammare gör inläggen;
  4. Fylla värdena i den andra med en slinga av något slag som ökar en räknare (som SQL Server rownum-tricket) som beställer inläggen att matcha den ursprungliga ordningen;
  5. Ersätt den gamla kolumnen med den nya;
  6. Återställ automatisk ökning och primärnyckelstatus.


  1. php kommer inte att infoga data i databasen

  2. två där villkor i en mysql-fråga

  3. Hur kontrollerar man om en databas och tabeller finns i sql-servern i ett vb .net-projekt?

  4. Kan inte installera MySQL UDF