Bonjour,
J'ai une table avec une colonne ID et une autre NOM.
J'aimerai savoir s'il y a un moyen pour lorsque je supprime un enregistrement de réinitialiser les ID pour éviter d'avoir des "trous" .
Merci d'avance
Bonjour,
J'ai une table avec une colonne ID et une autre NOM.
J'aimerai savoir s'il y a un moyen pour lorsque je supprime un enregistrement de réinitialiser les ID pour éviter d'avoir des "trous" .
Merci d'avance
slt...
Si tu parle de pouvoir changer les id´s et si ils sont des clées primaires, ce que t´essaye de faire n´est pas recommander...
Une cle primaire ne dois jamais etre reutiliser...
Si c´est pas le cas, oui c´est possible....
Mais comme tu dis que ta table n´a que id et nom... Et meme dans ce cas, ton id n´est pas utiliser dans d´autre tables?
non l'idée n'est pas utilisé.
En faite, je fais une petite application pour trier des users. Rien de compliqué...
slt...
Sans savoir exactement ce que tu pretend faire.
Tu peut passer para une table temporaire, par des curseurs ou alors plus simple:
tu fais une nouvelle table(Table2) exactement pareille que la table d´origine:
apres tu :
et tu change les noms des tables....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 INSERT INTO `table2` SELECT LES_CHAMPS FROM `table_ORIGINE`
par curseur:
Et attention ... avec les curseurs, tu peut avoir des problemes si ta des foreign key, ou si tu as des id en doubles (dans cet exemple) ... par exemple si tu as id= ( 2, 3, 4 ,2) ... ca vas pas marcher....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 DELIMITER $$ DROP PROCEDURE IF EXISTS `asdr` $$ CREATE PROCEDURE `asdr`() BEGIN DECLARE done INT DEFAULT 0; DECLARE a int; DECLARE compteur int; DECLARE cur1 CURSOR FOR SELECT id FROM TA_TABLE order by id; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; OPEN cur1; set compteur=1; REPEAT FETCH cur1 INTO a; IF NOT done THEN update TA_TABLE set id= compteur where id=a; set compteur = compteur+ 1; END IF; UNTIL done END REPEAT; END $$ DELIMITER ;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager