sql >> Database >  >> RDS >> Mysql

MySQL - automatisch verlagende waarde

U moet dat niet doen.
Neem geen automatisch verhoogde unieke identifier als een volgnummer.
Het woord "uniek" betekent dat de identifier moet worden vastgehouden in de rij voor altijd .

Er is geen verband tussen deze getallen en opsommen.
Stel je voor dat je records in alfabetische volgorde wilt selecteren. Waar zouden uw kostbare nummers naartoe gaan? Een database is niet zoals een geordende lijst, zoals u waarschijnlijk denkt. Het is geen plat bestand met rijen die in een vooraf gedefinieerde volgorde zijn opgeslagen. Het heeft een totaal andere ideologie. Rijen in de database hebben geen volgorde. En wordt alleen besteld op geselecteerde tijd, als het expliciet is ingesteld door ORDER BY clausule.
Ook wordt verondersteld dat een database voor u zoekt. U kunt dus zien dat met gefilterde rijen of een andere volgorde dit automatisch oplopende nummer absoluut niets te maken heeft met de werkelijke rijposities.

Als u de uitvoer wilt opsommen, is dat de taak van een presentatielaag. Voeg gewoon een teller toe aan de PHP-kant.

En nogmaals:deze nummers zouden een bepaald record moeten identificeren. Als u dit nummer wijzigt, vindt u uw record nooit meer terug.

Neem bijvoorbeeld deze site. Stack Overflow identificeert zijn vragen met een dergelijk nummer:

Stel je voor dat je dit pagina-adres in een bladwijzer hebt opgeslagen. Nu komt Jeff langs en hernummert de hele database. Je drukt op je bladwijzer en komt op de andere vraag terecht. De hele site zou een vreselijke puinhoop worden.

Onthoud:het hernummeren van unieke identificatiecodes is slecht!



  1. Kan privilegetabellen niet openen en vergrendelen:Tabel 'mysql.user' bestaat niet

  2. sqlite:hoe voeg ik de totale tijd toe uu:mm:ss waarbij het kolomgegevenstype DATETIME is?

  3. MySQL-fout:#1142 - SELECT-opdracht geweigerd aan gebruiker

  4. PostgresSQL-installatie mislukt:initialisatie van databasecluster mislukt MAC os