Vraag : Van het de motorhergebruik van InnoDB auto_increment IDs!!

Ik ben een probleem met de motor InnoDB tegengekomen: het verliest spoor van het volgende aantal voor auto_incrementkolommen na servernieuw begin. En dat kan IDs van geschrapte rijen veroorzaken om aan nieuwe rijen worden opnieuw toegewezen.

This is werkelijk een probleem voor mijn Webtoepassing: sommige lijsten hebben verwijzingen naar andere lijsten. En indien geschrapte die IDs voor nieuwe verslagen opnieuw wordt gebruikt wordt, dan richten die verwijzingen plotseling aan andere verslagen met nieuwe gegevens in plaats van aan de geschrapte rijen. Dit is zeer verwarrend en kan tot grote, grote problemen met gegevensbestandconsistentie leiden.

Every- lijst in mijn gegevensbestand een primaire zeer belangrijke kolom genoemd „identiteitskaart“, die als auto_increment wordt gedefini�ërd. En ik baseerde me op de veronderstelling dat dat unieke primaire sleutels voor alle gegevensbestandverslagen zou verzekeren.

I heeft gelezen dat MyISAM niet aan dit lijdt, maar dat de motor sommige eigenschappen mist die ik nodig heb, als b.v. rij-vlakke sluiten en transacties.

How kan ik het verliezen spoor van de hoogste nieuwe autonumberwaarde na servernieuwe begin verhinderen, zodat IDs van geschrapte rijen niet opnieuw toegewezen wordt?

Antwoord : Van het de motorhergebruik van InnoDB auto_increment IDs!!

Ik weet niet hoe een Webtoepassing zou weten of was db opnieuw begonnen behalve als u iets als pid van de mysqlinstantie op schijf opslaat telkens als u tot de pagina toegang hebt.

O.K., nu ik aan het, waarom dit niet doen denk: Telkens als u de toepassing in werking stelt, sparen last_insert_id () aan een lokaal dossier.

Alvorens u een tussenvoegsel in werking stelt, controleer dat dossier en vergelijk het bij het volgende auto_incrementaantal

SELECTEER AUTO_INCREMENT VAN information_schema.TABLES WAAR
      TABLE_SCHEMA = GEGEVENSBESTAND () EN TABLE_NAME = „WAT“

Dan, als het lokale dossier zelfde of grotere, vastgestelde auto_increment aan één meer dan het grotere aantal heeft. Als niet, me maak niet ongerust.
Andere oplossingen  
 
programming4us programming4us