limba romana   english language

"Cu capãtul arcurilor, trecînd,
rãzboinicii
mîngîie roua..."

Yosa Buson (1715-1783)

stiri despre activitatile noastre, webdesign, seo, consultanta, IT, Romania

O colecție de știri. Activități. Diverse. Chestii mai mult sau mai puțin interesante, după gusturile fiecăruia.

06 februarie 2010 - Dan-Marius Sabau
Categoria: programare;

Probabil că majoritatea dintre programatorii (sau, cu alte cuvinte, web-designer-ii) care au lucrat cu bazele de date s-au lovit de-a lungul timpului de o problemă: reindexarea unei tabele. E vorba despre acele tabele care conțin un index auto_increment a cărui valoare se mărește cu 1 la fiecare introducere a unor valori noi în tabelă. Din diverse motive anumite valori trebuie șterse, iar indecșii nu se refac. Asfel, în tabelă apar "găuri" în numărătoarea indexului, iar indecșii nu mai sînt consecutivi.

Pentru a repara acest lucru se execută în mysql următorul cod, unde "nume_tabelă" va trebui schimbat cu numele tabelei pe care o folosiți.

SET @var_name = 0;

UPDATE nume_tabela SET ID = (@var_name := @var_name 1);

După aceea se caută ultima valoare a indexului din tabelă (va fi deja renumărat), hai să zicem că acea valoare este 15. Ultimul pas este stabilirea noii valori de auto-incrementare pentru a nu apare alte "găuri" în numărătoare, iar indexul să sară de la 15 la 25, de exemplu. Această valoare va fi ultima valoare a indexului 1. Conform exemplului dat, sintaxa ce mai rămîne de executat este următoarea:

ALTER TABLE nume_tabela AUTO_INCREMENT = 16;



Numele tau
Adresa ta electronica
Pagina ta web
Drept de autor (c) - Supravirtual SRL - 2005-2010 - Toate drepturile rezervate.

Web directory RSS feeds HostGator promo code