par
Augure » 30 juin 2005, 15:39
bonjour,
j'ai un champ ID(int, auto increment, cle primaire) dans une table. suite a divers ajout et suppression, il y a des trous entre chaque ligne (on passe de 2 a 7 par ex).
ya t'il une commande qui permet de reindexer pour combler ces trous?????
sinon c'est possible de reindexer ou pas?
On suppose que ta table ce nomme T
Code : Tout sélectionner
Create table T_tmp ( ID int , ... (les autres colonnes) .... ) ;
Insert T_tmp Select * from T
Drop table T;
Create table T_tmp ( ID int auto increment primary key, ... (les autres colonnes) .... ) ;
Insert T ( .... toutes les colonnes sauf ID .... ) Select ( .... toutes les colonnes sauf ID .... ) from T;
Il faut aussi gérer les clé étrangers pointant sur T .... et ça c'est encore plus lourd !!!!
C'est à mon avis une mauvaise idée que de vouloir re indexer
PS : Dans mes équipes de développement j'interdis toujours la mise à jour des clé primaire.
PS : Si tu veux avoir un code "sans trou" je te conseille :
Code : Tout sélectionner
create table T ( ID int auto increment primary key , CODE int , ....) ;
Tu pourras faire toutes les mises à jour sur CODE que tu veux sans mettre en péril l'intégrité relationelle de ta base. Cependant bon courage pour tes utilisateurs qui verront les code changer parfois
[quote="laTulipe"]bonjour,
j'ai un champ ID(int, auto increment, cle primaire) dans une table. suite a divers ajout et suppression, il y a des trous entre chaque ligne (on passe de 2 a 7 par ex).
ya t'il une commande qui permet de reindexer pour combler ces trous?????
[/quote]
[quote]sinon c'est possible de reindexer ou pas?[/quote]
On suppose que ta table ce nomme T
[code]Create table T_tmp ( ID int , ... (les autres colonnes) .... ) ;
Insert T_tmp Select * from T
Drop table T;
Create table T_tmp ( ID int auto increment primary key, ... (les autres colonnes) .... ) ;
Insert T ( .... toutes les colonnes sauf ID .... ) Select ( .... toutes les colonnes sauf ID .... ) from T;[/code]
Il faut aussi gérer les clé étrangers pointant sur T .... et ça c'est encore plus lourd !!!!
[b]C'est à mon avis une mauvaise idée que de vouloir re indexer[/b]
PS : Dans mes équipes de développement j'interdis toujours la mise à jour des clé primaire.
PS : Si tu veux avoir un code "sans trou" je te conseille :
[code]create table T ( ID int auto increment primary key , CODE int , ....) ;[/code]
Tu pourras faire toutes les mises à jour sur CODE que tu veux sans mettre en péril l'intégrité relationelle de ta base. Cependant bon courage pour tes utilisateurs qui verront les code changer parfois