Rezultate 1 la 7 din 7

Subiect: Cum pot sa anticipez ID-ul?

Afișare hibrid

  1. #1
    Avatarul lui Federals
    Federals este deconectat Ambasador
    Reputatie:
    36
    Data înscrierii
    29th November 2007
    Locaţie
    Bucuresti
    Posturi
    612
    Putere Rep
    36


    Implicit

    mersi pgabriel!

  2. #2
    Avatarul lui Dever
    Dever este deconectat Ambasador
    Reputatie:
    37
    Data înscrierii
    28th July 2006
    Locaţie
    UK
    Vârstă
    45
    Posturi
    378
    Putere Rep
    37


    Implicit

    "SELECT id FROM table ORDER BY id DESC LIMIT 1"
    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;
    Dever's Blog - Atentie! dau cu parerea.

  3. #3
    Avatarul lui Ciprian.Olaru
    Ciprian.Olaru este deconectat Membru SeoPedia
    Reputatie:
    0
    Data înscrierii
    6th August 2007
    Locaţie
    Bucuresti
    Posturi
    573
    Putere Rep
    0


    Implicit

    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,

Informații subiect

Utilizatori care navighează în acest subiect

Momentan este/sunt 1 utilizator(i) care navighează în acest subiect. (0 membrii și 1 vizitatori)

Permisiuni postare

  • Nu puteţi posta subiecte noi.
  • Nu puteţi răspunde la subiecte
  • Nu puteţi adăuga ataşamente
  • Nu puteţi modifica posturile proprii
  •