Database tafels hebben unieke identificatienummers , de zogenaamde primaire sleutels , voor elke afzonderlijke rij . MySQL 's auto - increment functie wijst automatisch een nieuw nummer aan een integer kolom die u opgeeft als uw primaire sleutel , die geeft je de tijd die nodig is om uw eigen primaire sleutel en de code voor het bijhouden creëren bespaart . Als je er bij neervalt rijen , echter , uw reeks van auto - increment waarden valt uit sync met de rest van de kolom waarden . Auto- Increment functie De auto- increment functie werkt door het bijhouden van de rij identificatienummers op de tafel zelf . Wanneer u een bepaalde kolom naar auto- increment te wijzen , wanneer u een rij aan die tafel toe te voegen , MySQL's ISAM motor automatisch gevuld die kolom met een numerieke waarde die een groter is dan de waarde die de laatste rij je toegevoegd geïdentificeerd . De functie is niet afhankelijk van de gegevens in uw rijen zichzelf , maar zijn eigen record van de laatste waarde is toegewezen aan een rij . Getting Out of Sync Toen je rijen van uw tabel wilt verwijderen , u afzonderlijke componenten in de volgorde van de nummers het ISAM motor toegewezen aan uw rijen verwijderen . Als u de vierde rij verwijderen, bijvoorbeeld , dan MySQL niet teruggaan en ken numerieke waarden met het veld dat automatisch verhogen , om de numerieke sequentie behouden . Evenzo, als MySQL gaf de laatste rij je een indentificatie aantal 20 toegevoegd en u deze verwijdert , de ISAM -motor kent nog de volgende rij je de waarde van 21 toe te voegen . Auto - Increment reactie Omdat het doel van auto - increment is om elke rij in uw profiel MySQL tabel een unieke identificatie , het maakt niet uit of de nummers het toekent als identificatie hebben gaten in de sequentie of niet . Het doet alleen dat er geen twee rijen hebben hetzelfde ID-nummer . Programma ontwerpen die afhankelijk zijn van een ononderbroken opeenvolging van nummers voor het navigeren in de database tabel zijn onbetrouwbaar , omdat daalde databaserijen ze defect kunnen maken . Het laden van de rij data in een array - achtig object en het gebruik element indices is een stabielere benadering . Oplossing Om uw auto- increment kolom in perfecte volgorde , fix gaten nadat u rijen dalen van uw tafel . Als je er bij neervalt de hele kolom , MySQL gooit ook zijn eigen record van het volgende nummer het zal gebruiken voor de volgende rij je die tafel toewijst . Wanneer u de kolom opnieuw met dezelfde auto- increment syntax , MySQL vult automatisch de kolom met een ordelijke opeenvolging van nummers voor elke rij die u momenteel in de database . Echter , om een perfecte opeenvolging behouden , moet u deze stap elke keer dat u drop een rij van de tabel herhalen .
|