[mysql] reset auto increment

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • ocdaan
  • Registratie: Augustus 2001
  • Laatst online: 03-09 14:20

ocdaan

Niet zo zeuren jongens!

Topicstarter
Ik zit met het volgende probleempje:

Het id veld (met auto increment) in een tabel staat te hoog. Er staan een x aantal records in. Het laatste record heeft bv als id 200 terwijl nieuwe records nu beginnen bij bv 250 tewijl ik graag zie dat dit dus 201 is.

Ik kan geen oplossing vinden. Het enigste wat ik zelf kan bedenken is om alle data van die tabel naar een cloon te schrijven, het orginele id veld te resetten en dan alle data weer terug te schrijven.

Iemand een idee? Thanx

Acties:
  • 0 Henk 'm!

  • 418O2
  • Registratie: November 2001
  • Laatst online: 23:06
is het 1..200 en dan 250? Dan kan je 250 gewoon veranderen naar 201 en dan nummert hij daarna door volgens mij.

Acties:
  • 0 Henk 'm!

Verwijderd

Heb je hier al naar gezocht uberhaupt??
Google op "MySQL Reset Auto Increment"

Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
ALTER TABLE tbl_name AUTO_INCREMENT = 200

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • ocdaan
  • Registratie: Augustus 2001
  • Laatst online: 03-09 14:20

ocdaan

Niet zo zeuren jongens!

Topicstarter
KabouterSuper schreef op maandag 02 februari 2009 @ 13:35:
ALTER TABLE tbl_name AUTO_INCREMENT = 200
ja super, precies wat ik zocht, was'm nog niet tegengekomen... werkt prima ;)

Thanx!

Acties:
  • 0 Henk 'm!

  • remmelt
  • Registratie: Januari 2001
  • Laatst online: 09-04 12:25
Je weet toch dat dat id niet een human-readable is? Dat is gewoon een willekeurig nummer. Ik zou me vooral geen zorgen maken over hoe dat ding heet of eruit ziet. Waarom moet 'ie zo nodig opeenvolgend zijn?

Acties:
  • 0 Henk 'm!

  • ocdaan
  • Registratie: Augustus 2001
  • Laatst online: 03-09 14:20

ocdaan

Niet zo zeuren jongens!

Topicstarter
remmelt schreef op maandag 02 februari 2009 @ 13:46:
Je weet toch dat dat id niet een human-readable is? Dat is gewoon een willekeurig nummer. Ik zou me vooral geen zorgen maken over hoe dat ding heet of eruit ziet. Waarom moet 'ie zo nodig opeenvolgend zijn?
Ik heb dus 1 plek waar het wel word gebruikt als human-readable.... vandaar. Niet erg verstandig maarja, zo is het nu eenmaal, probleempje is nu opgelost dus verder prima zo ;)

Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Als het echt niet human-readable is, waarom zou MySQL dan functionaliteit bieden om de sequence waarde aan te passen? En waarom dan resetten bij een truncate?

Gebruikers (waaronder programmeurs) zijn gewoon erg gehecht aan structuur en orde.

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

Verwijderd

ocdaan schreef op maandag 02 februari 2009 @ 13:43:
[...]


ja super, precies wat ik zocht, was'm nog niet tegengekomen... werkt prima ;)

Thanx!
Eerste hit op google met mijn query, maargoed je zal inderdaad wel niet gezocht hebben.

Acties:
  • 0 Henk 'm!

  • roodbwoy
  • Registratie: November 2003
  • Laatst online: 28-10-2021

roodbwoy

Senile Developer

waarom kies je voor een autoincrement en geen unique identifier?

Acties:
  • 0 Henk 'm!

Verwijderd

Een autoincrement is de eenvoudigste vorm van een unique identifier? Meestal ook een vorm van luiheid, maar het werkt wel.

Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Een auto-increment is de eenvoudigste meest robuuste vorm van een unique identifier!

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • remmelt
  • Registratie: Januari 2001
  • Laatst online: 09-04 12:25
KabouterSuper schreef op maandag 02 februari 2009 @ 14:01:
Als het echt niet human-readable is, waarom zou MySQL dan functionaliteit bieden om de sequence waarde aan te passen? En waarom dan resetten bij een truncate?

Gebruikers (waaronder programmeurs) zijn gewoon erg gehecht aan structuur en orde.
Omdat er veel mensen zijn die die waarde op tinyint zetten? Geen idee. Omdat er programmeurs zijn die zenuwachtig worden van een id-gat tussen verschillende records? ;)

Mijn punt was eigenlijk dat die dingen willekeurig zijn en toevallig oplopend. Als je een echt oplopend id wilt hebben, kan je dat beter op een andere manier oplossen omdat mysql helemaal niet garandeert dat die auto increment oplopend blijft. Er komt met elk nieuwe record natuurlijk +1 op, maar je kan natuurlijk dingen verwijderen waarna de sequence niet passend wordt gemaakt door de rest met -1 aan te passen (en terecht).

Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

En zelfs bij een insert die nooit wordt gecommit (i.e. een rollback) ben je je id kwijt.

Iets zegt me dan dat dat vast anders werkt bij MySQL, maar meestal is dat wel zo.

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Kenneth, bij de innoDB in mysql werkt het zowaar ook zo. ;)

[ Voor 11% gewijzigd door Voutloos op 02-02-2009 16:25 ]

{signature}


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Phew :P

Maar bij MyISAM enzo zeker weer niet?

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
MyISAM heeft uberhaupt geen transacties.
(druk op deze knop terwijl je vorige zin voorleest)

Maar als je bij MyISAM de rows met hoogste id's verwijdert en dan je db herstart, heb je wel een reset te pakken. :Y) :+

[ Voor 27% gewijzigd door Voutloos op 02-02-2009 16:40 ]

{signature}

Pagina: 1