cacellare tutti i record???

Ciao a tutti,

ho creato un treccato di importazione in grado di leggere da un file i dati ed inserirli in un DB.

Questo tipo di importazione dovrebbe essere fatto giornalmente o al più 2 volte a settimana.

Io ho già annunci inseriti nel mio db mettiamo che il loro id vada da 1 a 2000.

Ieri ho eseguito l'importazione di 5000 record.

Qundi se inserisco un altro annuncio l'id succerssivo (univoco ed autoincrementante) sarà 7001.

Fin qui ok.

Adesso devo nuovamente reimportare i dati dal file.

1) cancello i 5000 annunci

2) riscrivo con id che andrà da 7002 in poi

in sto modo perdo 5000 id al colpo e se lo facessi tutti i giorni non ne parliamo.

Come posso fare in modo che gli annunci siano cancellati e riscritti senza perdere un numero cosi grande di id???

NB non sempre nel file troverà 5000 record. In alcuni casi ne averò di più in altri meno.

Spero possiate darmi delle delucidazioni in merito

Grazie mille

 :bye:

inviato 10 anni fa
stellina
X 0 X

Prima di inserire i nuovi record potresti riportare il valore dell'indice auto-increment in modo che riprenda correttamente la numerazione con la query: ALTER TABLE tabella AUTO_INCREMENT = 100 (100 è solo un esempio).

QUindi ti basta verificare con una SELECT, dopo aver cancellato i vecchi record, quale sia l'ID più grande che rimane nella tabella e poi lanciare quella query.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Scusa ma non ben capito:  :idiot:

mettiamo che abbia 1,2,3,4,5,6 record già inseriti e voglia togliere 4,5,6

salvo 6 come indice dell'autoincrement

cancello i record 4,5,6

faccio una select per vedere l'id più grande in questo caso 3

e poi???

 :bye:

risposto 10 anni fa
stellina
X 0 X

Se hai  gli ID 1,2,3,4,5,6 quando cancelli i record 4,5,6 ti rimangono 1,2,3 ma se vai ad inserire un nuovo record prenderà come ID 7.

Allora prima di inserirlo, dopo aver cancellato i record, con una SELECT devi sercare l'ID più grande presente nella tabella, in questo caso vale 3

Esegui quindi la query:

ALTER TABLE tabella AUTO_INCREMENT = 4

e poi inserisci i nuovi record...

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

ok adesso mi è chiaro.

Se ho sempre 1,2,3,4,5,6 e cancello il 3,4 il discorso non vale più.

Pensa di avere 1,.............................fino a 2000 poi

da 2001 a 7000

e da 7001 a 7521

se cancello da 2001 a 7000 e mi faccio restituire l'id più grande andre cmq a scrivere dopo 7521 e avrei ugualmente il buco di 5000 id.

Sbaglio????

 :bye:

risposto 10 anni fa
stellina
X 0 X

E' esatto, il buco rimane. Se temi di "finire" gli ID in poco tempo allora ti conviene usare qualche altro sistema per la chiave primaria.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda