Waarom wordt er bij ON DUPLICATE KEY UPDATE de auto-increment opgehoogd?
Ik krijg zo gaten in mijn auto-increment (op zich niet heel erg maar wel irritant) en het id loopt wel erg op na veel updates. Ook gebruik ik dit id in een url wat nu niet meer als favoriet kan worden opgeslagen. Niet wenselijk dus. Heeft iemand een idee hoe dit te omzeilen?
Hadden we niet geconstateerd dat bij een innodb bij ON DUPLICATE KEY UPDATE de AI ook wordt veranderd bij een update? Of was dit nu niet het geval?
Dat betreft alleen de waarde die je krijgt bij het eerstvolgende nieuw ingevoegde record. Heeft dus niets te maken met wat er al in je database staat.

En als je geen transacties nodig hebt, zou ik zelfs ook afraden om InnoDB te gebruiken.
lol..ik zal voor mezelf dit eens testen..
welke zou je dan willen gebruiken? MyISAM?

Die ondersteunt weer geen foreign key restricties.
Tegenwoordig gebruik ik voornamelijk Aria (een verbeterde versie van MyISAM die binnenkort ook transactioneel kan werken) en ik ben aan het experimenteren met TokuDB. (En om te voorkomen dat je je wezenloos gaat zitten zoeken: ik ben eigenlijk ook van MySQL geswitcht naar MariaDB...)

Geen van beide storage engines ondersteunt foreign keys, maar eigenlijk mis ik die ook niet. Voor de bulk van mijn werk heb ik ze niet nodig en anders werk ik er wel omheen in mijn scripting of met triggers.

Het grote nadeel van InnoDB vind ik dat je de tabellen niet kunt gebruiken op een andere MySQL/MariaDB-installatie. Dat maakt het een stuk vervelender om je databases/tabellen te verhuizen naar een andere server of om een gecrashte tabel op een andere server te repareren. Ik heb al heel wat tijd verspild aan het weer toegankelijk maken van data die in een gecrashte InnoDB-tabel stond.
Ger van Steenderen op 06/09/2014 20:05:37

>> Tenzij je SET innodb_autoinc_lock_mode = 0 uitvoert? Dan blijft de AI opeenvolgend?

Garantie tot aan de deur ......

Maar goed van die garantie, je kan die setting alleen in de configuratie aanpassen.
De default is 1.

Maar wat is het probleem van die gaps? Een automatisch gegenereerde key mag geen enkele betekenis hebben.

Reageren