Citat Postat în original de Dever Vezi Post
Pe mine m-ai pierdut un pic la "sterg id-ul 3 ... si apoi nu stiu cum iti intoarce 3 dar e 4 ... DAR ... poti folosi (daca nu ma insel este si o idee mai repede, probabil un 0,00000ceva) si
Cod:
SELECT MAX(id) FROM table
De asemenea nu te opreste nimeni sa nu folosesti o alta coloana, id-ul ar trebui sa fie unic si atat. Depinde ce anume vrei sa faci ... dar plec ipotetic de la ideea ca ai nevoie de un numar incrementat care sa isi pastreze toate valorile ocupate (un fel de ordine a elementelor independenta de id) si zic ca ai putea sa faci asa:

- cand faci insert iei MAX(numar)+1;
- daca vrei sa stergi un numar din serie (stergi numarul 5 din seria 1-20) poti sa stergi 5:
Cod:
DELETE FROM table WHERE id=5; si apoi modifici restul
UPDATE table SET numar=numar-1 WHERE id>5;

ma indoiesc ca asta era cerinta (oricum, dupa mine e o metoda de evitat);

daca intuiesc bine scopul pentru care trebuie anticipat id (adica acela de a avea idul randului inserat fara a face un select suplimentar dupa) cred ca poti folosi asta: http://dev.mysql.com/doc/refman/5.0/...unique-id.html
in felul asta cu siguranta nimeresti idul pt ca tocmai l-ai introdus (daca totusi ai dubii poti incerca sa folosesti tranzactii pentru toate pachetele de date prelucrate - parca de ceva vreme stie si mysql de asta) si il poti folosi linistit mai tarziu (la orice interval de timp) chiar daca alt set de date iti insereaza un nou rand in tabela initiala;


bafta,