Even een simpel/ kort vraagje, ik heb een shoutbox gemaakt, waarbij je kan bladeren door de laatste 50 berichten, de oudere berichten worden verwijderd, omdat je daar niets meer mee doet.

Stel nou dat ik (het is een voorbeeld, het is niet zo) de id een int(3) had gemaakt, dan zit je dus maximaal aan 999. Als ik nu bij de 999 zit, en er wordt een bericht toegevoegd, dan kan dat niet, omdat de ID niet verder loopt. Hoe kan ik ervoor zorgen dat die weer opnieuw begint met tellen?
Ik heb geen idee hoe het qua scripting moet, maar je kunt het errornummer van MySQL opvragen, en als je het errornummer krijgt van dat de ID niet meer door kan tellen, dan overwrite je de 1ste ;-)
De 1e hoef ik niet te overschrijven, als er geen fouten zijn, heb ik alleen de id's 949 t/m 999 in gebruik, op dat moment.. (de oudere berichten worden gewist, omdat dat bij een shoutbox niet uitmaakt.., ik hou er trouwens altijd 10 extra in, voor het geval dat) Hij controleerd trouwens op de datum (die moet kleiner (dus ouder) zijn dan het 60e bericht dat er, gesorteerd op datum DESC, in staat)

Maar als ik de 1e overschrijf, gaat die dan met de auto_increment weer opnieuw beginnen?
Zulke problemen moet je juist van te voren oplossen door geen int(3) te kiezen.
dan kun je gewoon het error nummer opvangen, en zodra je deze krijgt, weer bij 1 beginnen...
PHPerik, hij had al gezegd dat het bij hem niet zo was...

En als het goed is kan het met deze query:
SET insert_id = 1; 


Edit
Van MySQL.com
INSERT_ID = value

Set the value to be used by the following INSERT or ALTER TABLE statement when inserting an AUTO_INCREMENT value. This is mainly used with the binary log.
Dankjewel Willem-Jan.. Ik heb hem op int(10) staan, dus kan nog wel ff door hoor, maar zulke probleme kan je beter in je code voorkomen, zodat je er later geen problemen mee krijgt.. (Ik heb in 1 dag 180 id's gebruikt, wat overigens ook steeds meer wordt.. Het duurt zeker nog wel een paar maand / jaar voordat het zover is dat vernieuwen nodig is, maar het is (vind ik) nogal stom als je dan de melding krijgt dat er niet meer records kunnen toegevoegd.
INT(10)...
9.999.999.999 records...
180 op een dag
***Even rekenen***
Over 152.207,001 jaar zit jouw tabel vol.
Waar maak je je druk om :)

Edit
En ja, ik verveelde me :)
Hahaha, mooie rekensom, maar het worden er wel elke dag meer.. gisteren ging het slechts om 3 bezoekers.. :) Vandaar, en ik weet dat het heel lang duurt voor die vol is, het is ook niet dat ik me er druk om wil maken, maargoed ik was ook gewoon benieuwd of er een mogelijkheid was..
Limiet? Dan ben je echt wel even onderweg om die te bereiken, dat gaat je waarschijnlijk tijdens dit leven niet meer lukken.

Zie ook http://yapf.net/faq.php/100/858

Om de boel in 1 jaar vol te krijgen, moet je 24 uur per dag 136 records per seconde in de database wegschrijven. 365 dagen per jaar... 180 records op 1 dag, zul je in het vervolg dus in anderhalve seconde moeten wegschrijven!
Let er op dat INT niet per karakter rekent maar in getallen. Denk even aan binair en decimaal omrekenen. 8 bits omvatten 256 decimale getallen. Dat is dus 1 byte. Dat gaat dus tot 255 en niet tot 9. 2 bytes gaan tot 256², 3 bytes tot 256³, etc. Int(3) loopt niet tot 999, maar tot 16777215. Da's een relatief groot verschil.

Bekijk even de bron van Frank ook.

Reageren