Newsgroup: it.comp.software.database
Titolo: Riordinare NUMERAZIONE con MySQL....

Con MySQL :
Ho una tabella con "N" Utenti inseriti.
Se ne elimino uno con il comando :
DELETE FROM Customers WHERE Customer_ID = 3;
E poi faccio una SELECT * FROM Customers;
Vedo che Il Customer_ID è stato cancellato, ma l'indicizzazione passa da
2 a 4,,,
Come faccio a RIORDINARE l'indicizzazione con 1,2,3,4 ecc... ???
Grazie a chiunque possa aiutarmi ...
saluti

beh...chiaramente un ID di un record è legato a quel record (se no non
serve), per fare cio' che vuoi tu, cioè avere un campo numerico per ogni
record non devi usare il contatore, creane un altro che aggiorni in caso di
eliminazione di un record.....
se ho capito bene.....
bye
deV
ps: se poi invece vuoi far si che il prossimo ID sia ultimoID + 1, cioè non
lasciare spazi tra ID devi usare un comando che restori il contatore....

Ah ora ho capito.. Che sciocco.
Quindi, in questo caso ,usando AUTO_INCREMENT resto fregato perchè
utilizzo gli INDICI ...
Cercherò di fare come tu hai detto cioè creare una colonna che si indicizzi
( tramite un calcolo X +1 ) e che quando si elimina una riga questo vada a
mettere a posto la lista numerica...
Hai qualche esempio ?
Come avrai capito sono un novellino e non so come fare quesa cosetta ...
Grazie in anticipo..
saluti


purtroppo non ho esempi e non ho esperienze con MySQL, con MSQL7 esistono
vari modi, trigger, stored procedure.....
mi spiace....
deV

Grazie lo stesso , troverň il sistema... ;-)


 vari modi, trigger, stored procedure.....
Penso in MySQL l'unico modo possibile sia quello di tenersi un contatore
all'interno del programma che utilizza il db. Che linguaggio usi? se
utilizzi VB e ADO puoi utilizzare gli eventi WillChangeRecord etc.
Ciao, M.

Per adesso sto soltanto facendo delle prove, ma successivamente penso
che utilizzarò il PERL. Infatti questi miei studi sono in previsione di
gestire DB tramite pagine Web...
Spero sia la strada giusta :-|
Quindi se ho capito bene il contatore deve essere all'interno del programma ?
Mi sembra strano visto che, da quello che sto leggendo è possibile sommare
colonne
e righe, magari facendo un qualcosa tipo Excel cioè generare una espressione
che
sommi il valore della riga superiore ed aggiunga 1 in quella inferiore...
Potrebbe creare Casini ???
Chi mi può aiutare ancora un pochetto ?
grazie


 Potrebbe creare Casini ???
Dipende da quello che vuoi fare, puoi usare le funzioni max o count per
aggiornare gli indici, ma visto che in MySQL non ci sono i trigger, devi
farlo dal programma (o dallo script in caso di pagina web). Inoltre prima di
creare una chiave in questo modo, assicurati di fare un lock sulla tabella,
in modo da evitare problemi in processi concorrenti


Se il campo Customer_id è legato ad un'altra tabella stai attento
all'integrità referenziale.
Cmq prima di fare un inserimento fai una select max(customer_id) from
tabella e aggiungi 1 al risultato
Massimo
----------------------------------------------------------
Il vero problema non è tanto sapere se le macchine pensano
bensì se gli uomini pensano. B.F. SKINNER (1904-90)
----------------------------------------------------------

Ok, ma come faccio ad aggiungere +1 al valore di Customer_ID ?
Scrivendo :
SELECT (MAX(Customer_ID)+1) FROM Customers;
Ottengo il valore+1 di Customer_ID.....
Ma come faccio ad inserirlo ?
Ho provaco così ma non funziona :
INSERT INTO Customers(Customer_ID, Last_Name, First_Name)
VALUES( MAX(Customer_ID)+1,"Barabba", "Ricky");
MA NON FUNZIONA !!!
PERCHE' ????
