Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> PHP /MySQL Programmazione >> .

MySQL incremento automatico non è sincronizzato

tabelle del database hanno numeri di identificazione unici , chiamati chiavi primarie , per ogni singola riga . Funzione di incremento automatico di MySQL assegna automaticamente un nuovo numero di una colonna integer viene specificato come chiave primaria , che consente di risparmiare il tempo necessario per creare una chiave primaria e codice di monitoraggio . Se si lascia cadere le righe , però , la sequenza di valori di incremento automatico cade fuori sincrono con il resto dei valori della colonna . Incremento automatico Funzione

La funzione di incremento automatico funziona tenendo un registro dei numeri di identificazione fila sul tavolo stesso. Quando si designa una particolare colonna a incremento automatico , ogni volta che si aggiunge una riga alla tabella , motore ISAM di MySQL popola automaticamente la colonna con un valore numerico che è maggiore di uno rispetto al valore che identifica l'ultima riga aggiunta. La funzione non si basa su i dati nei file stessi , ma il proprio record del l'ultimo valore è assegnato a una fila .
Getting Out of Sync

Quando si eliminano le righe dalla tabella , si eliminano i singoli componenti nella sequenza dei numeri del motore ISAM assegnato ai vostri file . Se si elimina la quarta fila , per esempio, allora MySQL non torna indietro e riassegnare i valori numerici per il campo che è sequenziale , al fine di mantenere la sequenza numerica . Allo stesso modo , se MySQL ha dato l' ultima riga si è aggiunto un numero di identificazione di 20 ed è stata eliminata , il motore ISAM assegna ancora la riga successiva si aggiunge il valore di 21 .
Incremento automatico risposta

Poiché lo scopo di auto-incremento è di fornire ogni riga della tabella MySQL un identificatore unico , non importa se i numeri che assegna l'identificazione hanno buchi nella sequenza o meno. Importa solo che non esistono due righe hanno lo stesso numero ID . Disegni di programma che si basano su una sequenza ininterrotta di numeri per la navigazione la tabella di database non sono affidabili , perché le righe del database cadute possono farli funzionare correttamente . Caricamento dei dati di riga in un array , come oggetto e utilizzando indicies elemento è un approccio più stabile .
Soluzione

Per mantenere la colonna a incremento automatico in sequenza perfetta , fissare i fori dopo si lascia cadere righe dal vostro tavolo . Quando si rilascia l'intera colonna , MySQL scarta anche il proprio record del numero successivo userà per la riga successiva si assegna quel tavolo . Quando si ricrea la colonna con la stessa sintassi di incremento automatico , MySQL popola automaticamente la colonna con una sequenza ordinata di numeri per ogni riga che hai al momento nel database. Tuttavia, per mantenere una perfetta sequenza , dovete ripetere questo passaggio ogni volta che si lascia cadere una riga dalla tabella .

 

Programmazione © www.354353.com