sql >> Databasteknik >  >> RDS >> Mysql

Hur uppdaterar jag en tabell för att lägga till en primärnyckel och uppdatera alla befintliga rader med inkrementerade ID:n?

Efter att ha lagt till en ny ID-kolumn (ställ inte in som primärnyckel ännu, och aktivera inte automatisk ökning) kör:

SET @index = 1;
UPDATE tablename SET ID = (@index:[email protected]+1);

Detta ställer in ett ökande ID-värde som börjar från 1 på var och en av dina befintliga rader och löser därmed problemet med dubblettnyckeln som du skulle möta om du försökte infoga en ny primärnyckelkolumn efter att data redan har matats in.

När detta är gjort kan du ställa in ID-kolumnen som en primärnyckel med automatisk ökning.



  1. Varför går mysql-anslutningen av (förlorade anslutningen till MySQL-servern under frågefel)

  2. Ett MySQL IF-villkor

  3. Dataintegritet och prestandaöverväganden i MySQL semisynkron replikering

  4. Postgres-trigger efter infogning åtkomst till NEW