Renuméroter les lignes d'une table InnoDB

2004-02-24 Par sujet Laurent Oliva
Bonjour,

Il me vient une question très pertinente, j'ai une table sous MySQL qui
possède une clé primaire sur une colonne 'id' avec des auto_increment.

J'ai des lignes qui vont de 1 à 10 mettons, si j'efface la ligne 8,
comment je fait pour rénuméroter les lignes de ma table afin de ne pas
avoir de trous ?

J'ai cherché dans la doc mais je n'ai pas trouvé ce que je voulais,
merci.



Re: Renuméroter les lignes d'une table InnoDB

2004-02-24 Par sujet Laurent Oliva
J'avais penser sinon à passer par une table temporaire pour stocker
l'autre colonne (pas celle des id), et ré-alimenter la table initiale
pour les id s'ajustent en conséquence, mais pourquoi le soft ne le fait
pas automatiquement ?

Le mar 24/02/2004 à 11:17, Nicolas Rueff a écrit :
 Ainsi parla Laurent Oliva le 055ème jour de l'an 2004:
 
  Bonjour,
  
  Il me vient une question très pertinente, j'ai une table sous MySQL
  qui possède une clé primaire sur une colonne 'id' avec des
  auto_increment.
  
  J'ai des lignes qui vont de 1 à 10 mettons, si j'efface la ligne 8,
  comment je fait pour rénuméroter les lignes de ma table afin de ne pas
  avoir de trous ?
 
 Je vois bien une technique très bourrin: supprimer la colonne id, puis
 recréer la colonne. Ça marche avec du myisam, reste à savoir si le type
 innodb le supporte. Attention toutefois: la manip ne fonctionne bien que
 si ta clé primaire est la seule indexant ta table.
 
 
 -- 
   Nicolas Rueff · Montbéliard · France · http://rueff.homelinux.org
  (^[EMAIL PROTECTED] · GPG 0xDD44DAB4
  /v\   Jabber [EMAIL PROTECTED] · ICQ 97700474
 __/  « We are Penguin. Resistance is futile. You will be assimilated. »
  
 



Re: Renuméroter les lignes d'une table InnoDB

2004-02-24 Par sujet sylvain . cherrier
Selon Laurent Oliva [EMAIL PROTECTED]:

 J'avais penser sinon à passer par une table temporaire pour stocker
 l'autre colonne (pas celle des id), et ré-alimenter la table initiale
 pour les id s'ajustent en conséquence, mais pourquoi le soft ne le fait
 pas automatiquement ?
 

Bonjour Laurent (;-) )

En fait, soit tu utilises un insert-id pour ne pas avoir à gérer tes numéros, et
tu laisses donc faire la machine..
Soit tu gères un identifiant toi même...
Mais tu ne dois pas changer ce numéro (ou alors, tu peux, si tu sais ce que tu
fais... Mais le SGBDR ne le fait pas lui même.. Sinon, ton intégrité
référentielle est compromise... Ou alors, il faudrait d'autorité qu'il change
toutes les cles étrangères qui pointent sur ce tuple ?
Tu vois que ce serait bizarre..
En théorie, tu caches même ce numéro à l'utilisateur, souvent...
(regarde par exemple l'identifiant d'une news dans un site d'information..)



Re: Renuméroter les lignes d'une table InnoDB

2004-02-24 Par sujet Manu
Selon Laurent Oliva [EMAIL PROTECTED]:

 J'avais penser sinon à passer par une table temporaire pour stocker
 l'autre colonne (pas celle des id), et ré-alimenter la table initiale
 pour les id s'ajustent en conséquence, mais pourquoi le soft ne le fait
 pas automatiquement ?

j'ai aussi une idée qui consiterai à chercher la ligne dont l'ID est le plus
grand et de lui donné l'ID de la ligne que tu va supprimer mais ça dépend si
l'ID à une importance (genre classementou autre), ça à le bénéfice d'être une
opération simple à réaliser


M.

 
 Le mar 24/02/2004 à 11:17, Nicolas Rueff a écrit :
  Ainsi parla Laurent Oliva le 055ème jour de l'an 2004:
  
   Bonjour,
   
   Il me vient une question très pertinente, j'ai une table sous MySQL
   qui possède une clé primaire sur une colonne 'id' avec des
   auto_increment.
   
   J'ai des lignes qui vont de 1 à 10 mettons, si j'efface la ligne 8,
   comment je fait pour rénuméroter les lignes de ma table afin de ne pas
   avoir de trous ?
  
  Je vois bien une technique très bourrin: supprimer la colonne id, puis
  recréer la colonne. Ça marche avec du myisam, reste à savoir si le type
  innodb le supporte. Attention toutefois: la manip ne fonctionne bien que
  si ta clé primaire est la seule indexant ta table.
  
  
  -- 
Nicolas Rueff · Montbéliard · France · http://rueff.homelinux.org
   (^[EMAIL PROTECTED] · GPG 0xDD44DAB4
   /v\   Jabber [EMAIL PROTECTED] · ICQ 97700474
  __/  « We are Penguin. Resistance is futile. You will be assimilated. »
   
  
 
 
 -- 
 Pensez à lire la FAQ de la liste avant de poser une question :
 http://wiki.debian.net/?DebianFrench
 
 Pensez à rajouter le mot ``spam'' dans vos champs From et Reply-To:
 
 To UNSUBSCRIBE, email to [EMAIL PROTECTED]
 with a subject of unsubscribe. Trouble? Contact
 [EMAIL PROTECTED]
 
 
-- 
Emmanuel Bouthenot - Kolter
  MAIL : [EMAIL PROTECTED]
   GPG : 0x414EC36E
   WWW : http://kolter.free.fr
JABBER : [EMAIL PROTECTED]
   TEL : (+33) 06 17 29 01 91





Re: Configure ton MUA [was: Re: Renuméroter les lignes d'une table InnoDB]

2004-02-24 Par sujet Laurent Oliva
Le mar 24/02/2004 à 11:39, Nicolas Rueff a écrit :
 Ainsi parla Laurent Oliva le 055ème jour de l'an 2004:
 
  Bonjour,
  
  Il me vient une question très pertinente, j'ai une table sous MySQL
  qui possède une clé primaire sur une colonne 'id' avec des
  auto_increment.
  
  J'ai des lignes qui vont de 1 à 10 mettons, si j'efface la ligne 8,
  comment je fait pour rénuméroter les lignes de ma table afin de ne pas
  avoir de trous ?
 
 Deux trucs qui seraient sympa:
 
 1) vire ton reply-to, histoire d'éviter que quelqu'un te réponde
 malencontreusement en privé en voulant répondre à la liste ;
 
 2) ne me mets pas en To: dans tes réponses quand tu mets la liste en CC:
 d'une part je suis bien abonné à la liste, d'autre part ça évitera à
 d'autres tètes en l'air de me faire parvenir une réponse destinée à la
 liste (c.f. FW dans ce thread).

J'ai glissé sur répondre à tous au lieu de répondre à la liste, je
vous présente toutes mes confuses =-)


 
 D'avance, merci. Et sans rancune.
 
 
 -- 
   Nicolas Rueff · Montbéliard · France · http://rueff.homelinux.org
  (^[EMAIL PROTECTED] · GPG 0xDD44DAB4
  /v\   Jabber [EMAIL PROTECTED] · ICQ 97700474
 __/  « We are Penguin. Resistance is futile. You will be assimilated. »
  
 



Re: Renuméroter les lignes d'une table InnoDB

2004-02-24 Par sujet François TOURDE
Le 12472ième jour après Epoch,
Laurent Oliva écrivait:

 Bonjour,

 Il me vient une question très pertinente, j'ai une table sous MySQL qui
 possède une clé primaire sur une colonne 'id' avec des auto_increment.

 J'ai des lignes qui vont de 1 à 10 mettons, si j'efface la ligne 8,
 comment je fait pour rénuméroter les lignes de ma table afin de ne pas
 avoir de trous ?

 J'ai cherché dans la doc mais je n'ai pas trouvé ce que je voulais,
 merci.

Juste une question. Pourquoi vouloir boucher les trous ? Ça n'a à
priori aucune espèce d'importance.

Ou alors si ça en a, c'est que ta gestion de la base est un peu
foireuse ;) ... On fait pas suivant avec id += 1 !!

-- 
Actually, typing random strings in the Finder does the equivalent of
filename completion.
-- Discussion on file completion vs. the Mac Finder