Hoi, m.b.v. phpMyAdmin heb ik een database gebouwd. Die heb ik ook getest met onzin data. Maar er staat ook zinnige data in de tabellen. Nu wil ik graag alleen de onzin data kwijt, maar hoe doe ik dat?

Alle tabellen beginnen met een id dat automatisch per rij met 1 wordt opgehoogd.
Als ik nu rijen verwijder dan verdwijnt ook het desbetreffende id permanent en dat is niet de bedoeling.
Als ik een rij handmatig wis, dus een rij selecteer, open en leegmaak. Dan komt alles op '0' te staan. Als ik later weer items toe ga voegen wordt deze rij niet opnieuw gevuld maar overgeslagen.

Vraag: Hoe wis ik bepaalde gevulde rijen zonder dat de automatische telling van de id's mbv de autoincrement teniet wordt gedaan. ???
En wat heb je dan bereikt? Niks. Het id heeft namelijk geen waarde, 1 of 473947 is exact hetzelfde: een uniek record.

Kan het niet vaak genoeg roepen, maar hou er nu toch maar over op.
Waarom wil je nou in vredesnaam zelf eigenhandig aan het id zitten. Blijf daar nou vanaf, er is GEEN enkele reden om die zogenaamd "weer netjes op volgorde"te krijgen.
Het id is van de database zelf, afblijven
Echt jullie hebben geen idee wat het id doet. Nou heb je een ongekoppelde tabel maar de volgende keer is ie gekoppeld en als je dan aan het id zit help je integriteit volledig overhoop
NIET AANZITTEN

[edit]
F*Ck Frank is weer sneller :)
[/edit]
Je kunt jezelf beter aanleren om je HELEMAAL niks van die id aan te trekken. Hij bestaat, is uniek en dat is genoeg. Desnoods laat je hem bij 156516056 beginnen.
Als je een mooi opeenlopend getal wilt hebben maak je daar een nieuwe kolom voor en daarin sorteer je het dan leuk.

Maar wen nu met het aanpassen van de id's en je krijgt later grote (zo niet gigantische) problemen.

edit
Beetje traag vanavond
Hm ok zoals ik het hier lees is er helemaal niets aan de hand. Ik wis gewoon alles wat onzin data was en wat al goed ingevoerd was laat ik gewoon staan.

De id 's van de bestellingen lopen ook niet op, weet niet hoe het komt. Maar schijnt niet erg te zijn want gaat om authenticiteit zoals ik hier begrijp.
Ja, je kunt er BETER niet aan zitten nee. Maar dit is een geval waar je nog een systeem aan het opbouwen bent, niet een already running system. Als iemand er dan op kikt op zijn eerst ingevoerde klant of voor mij part eerst geposte nieuwsbericht te tonen met als link: klant.php?id=1 ipv. klant.php?id=156516056 dan kan ik daar nog best een beetje in komen ook. Als later klant met id =1 verwijderd wordt tja, dan ben je hem alsnog kwijt. Maar kun je hem ook weer opnieuw invoeren als andere klant.
Dat is nu juist wat je NIET moet doen. Als een record uit je database is, ga je niet dat id aan een andere record toekennen. Dan is je integriteit weg.
Stel je hebt een platte tabel met een paar records zonder relaties. Welke integriteit gaat er dan verloren? Misschien mis ik iets?

Ik wil trouwens niet zeggen dat het verstandig is om id's te gaan hergebruiken, absoluut niet, en zeker niet in grote relationele databases.
@Jaws: Wanneer er geen enkele relatie is met andere tabellen, dan zou je best de auto_increment op 0 kunnen zetten. Maar waarom zou je dat doen? Het kost alleen tijd en je leert jezelf dingen aan die eigenlijk alleen maar goed fout kunnen gaan. Je moet er niet aan denken dat je later een (gedeelte van) een backup terug moet zetten.

En vergeet niet de hamvraag: Wat levert het op?
Antwoord: Niks, helemaal niks, nul, noppes, nada. Hoewel, het verhoogt het risico op zeer grote problemen. Maar wie zit daar op te wachten?

Kortom, blijf met je @#$%^& vingers van de auto_increment af! Die is van de database, daar heb jij van af te blijven.
Jaws schreef op 28.08.2007 00:06
Stel je hebt een platte tabel met een paar records zonder relaties. Welke integriteit gaat er dan verloren? Misschien mis ik iets?

Ik wil trouwens niet zeggen dat het verstandig is om id's te gaan hergebruiken, absoluut niet, en zeker niet in grote relationele databases.


Stel, jij hebt een website met een artikel over schapen onder ID 4, en jij gebruikt links op de manier die jij hierboven gaf. Google indexeert die pagina, en verbindt die link met ID 4 dus aan 'schapen'. Nu wis je dat artikel over schapen en zet er iets over lamsbouten op zijn plek. Iedereen die verwees naar dat artikel over schapen krijgt nu plotseling dat artikel over lamsbouten te zien.

Had je nu je ID niet hergebruikt, dan had je nog even netjes kunnen melden dat de pagina waar naar gezocht werd niet kon worden gevonden, en de bezoeker kunnen wijzen op de zoekfunctie van de site bijvoorbeeld.

Ik bedoel maar even, je eigen database is niet de enige database waar je relaties in kan opbouwen...
Klopt Jelmer.

@Frank: Ik blijf er bij, dat wanneer ik een systeempje heb gemaakt met een relationele database, en vervolgens de tabel structuur van dat systeem exporteer (via bijv. PHPMyadmin) en weer ergens online importeer met een autoincrement=0, dit absoluut geen probleem geeft wanneer de database leeg is. Ik heb het zelf tientalle keren gedaan zonder probs. Ik zie het eigenlijk meer zo: wanneer ik klaar ben met testen van een systeem dan lever ik het op tellende bij 0, net zoals je een auto ook koopt met een km-teller die bij 0 begint.

Dus let op, ik heb het dus over een nieuw systeem, met LEGE tabellen! Zoals een nieuwe auto die nog GEEN km's gereden heeft! :)

Reageren