sql >> Database >  >> RDS >> Mysql

Hoe kan ik volgnummers opnieuw instellen om opeenvolgend te worden?

Als het veld uw primaire sleutel is...

...dan, zoals elders bij deze vraag vermeld, moet u geen ID's wijzigen. De ID's zijn al uniek en u hoeft ze niet opnieuw te gebruiken.

Dat gezegd hebbende...

Anders...

Het is heel goed mogelijk dat je een andere . hebt veld (dat wil zeggen, evenals de PK) voor een door een toepassing gedefinieerde volgorde. Zolang deze volgorde niet inherent is aan een ander veld (bijvoorbeeld als het door de gebruiker is gedefinieerd), is hier niets mis mee.

Je zou de tabel opnieuw kunnen maken met een (tijdelijke) auto_increment veld en verwijder vervolgens de auto_increment daarna.

Ik zou in de verleiding komen om UPDATE in oplopende volgorde en pas een oplopende variabele toe.

SET @i = 0;
UPDATE `table`
   SET `myOrderCol` = @i:[email protected]+1
 ORDER BY `myOrderCol` ASC;

Het lijkt nogal verspillend om dit elke keer te doen u verwijdert items, maar helaas kunt u met deze handmatige bestelaanpak niet veel doen als u de integriteit van de kolom wilt behouden.

U kunt eventueel de belasting verminderen, zodat na het verwijderen van de invoer met myOrderCol gelijk aan, zeg, 5 :

SET @i = 5;
UPDATE `table`
   SET `myOrderCol` = @i:[email protected]+1
 WHERE `myOrderCol` > 5
 ORDER BY `myOrderCol` ASC;

Dit zal alle volgende waarden met één "schudden".



  1. mysqli_connect():(HY000/2003):Kan geen verbinding maken met MySQL-server op 'domeinnaam' (111)

  2. Hoe gebruik ik de opbouwfunctie voor expressies in Access 2016?

  3. Controleer of een tabel wordt verwezen door een externe sleutel in SQL Server met OBJECTPROPERTY()

  4. Asynchrone replicatie instellen tussen MySQL Galera-clusters