par
Sékiltoyai » 23 avr. 2007, 22:02
Oui mais dans l'hypothèse où tu utilises une clé primaire auto incrémentée, ce qui est la meilleure solution dans ce cas, supprimer le champ et le recréer réindexe automatiquement toutes les clés.
Sinon ya aussi une solution de transferer toutes les données vers une nouvelle table avec INSERT ... SELECT ...; et de renommer la table nouvellement créée.
Mais en tous cas il faut bannir les solutions par scripts qui sont inutiles dans ce cas, lourdes, et limitées par la quantité de données à réindéxer, alors que les serveurs SQL peuvent le faire beaucoup plus rapidement...
Edit :
Je viens de trouver une autre solution, qui marche pour tous les types de champs (sans clé primaire), et de manière beaucoup plus légère pour le serveur :
Code : Tout sélectionner
SET @tmp=0;
UPDATE `machin` SET `id`=@tmp:=@tmp+1 ORDER BY `id` ASC;
Oui mais dans l'hypothèse où tu utilises une clé primaire auto incrémentée, ce qui est la meilleure solution dans ce cas, supprimer le champ et le recréer réindexe automatiquement toutes les clés.
Sinon ya aussi une solution de transferer toutes les données vers une nouvelle table avec INSERT ... SELECT ...; et de renommer la table nouvellement créée.
Mais en tous cas il faut bannir les solutions par scripts qui sont inutiles dans ce cas, lourdes, et limitées par la quantité de données à réindéxer, alors que les serveurs SQL peuvent le faire beaucoup plus rapidement...
Edit :
Je viens de trouver une autre solution, qui marche pour tous les types de champs (sans clé primaire), et de manière beaucoup plus légère pour le serveur :
[code]SET @tmp=0;
UPDATE `machin` SET `id`=@tmp:=@tmp+1 ORDER BY `id` ASC;[/code]