Problème auto incrémentation mysql

Résolu
Nicocaine Messages postés 7 Date d'inscription   Statut Membre -  
Nicocaine Messages postés 7 Date d'inscription   Statut Membre -
Bonjour tout le monde,

J'ai actuellement une table temporaire sur mysql qui se présente comme suit:

CREATE TABLE TEMP_REQUESTER
(
id_req int,
Requester varchar(100),
PRIMARY KEY (id_req,Requester)
);

Dans cette table j'ai l'identifiant d'une requête(id_req) associé au nom du requester (Requester). Cependant je cherche à extraire de cette table dans une nouvelle table le nom de chaque requester différent (donc à l'aide d'un distinct) et lui affecter un numéro d'identifiant auto incrementé. J'ai essayé en faisant:

CREATE TABLE REQUESTER
SELECT id_Requester auto_increment, distinct(Requester) FROM TEMP_REQUESTER;

mais cela ne marche pas car id_requester n'existe pas dans temp_requester donc le select bloque. JE me demande donc s'il existerait une astuce pour ce problème.

Merci d'avance pour vos réponses.
Configuration: Windows 2000
Internet Explorer 6.0
mysql 4.1.9

2 réponses

  1. Ohm-WorK Messages postés 1468 Statut Contributeur 420
     
    Salut

    Pour moi, il faut faire ca en deux requètes : une première qui crée la table requester avec 2 champs, id_requester en auto increment, et requester.

    ensuite tu fais une requète insert qui insère le résultat d'une requète en select

    insert into requester (select distinct(Requester) FROM TEMP_REQUESTER;

    Tiens moi au courant :-)

    Tchuss

    La vie est une maladie mortelle, sexuellement transmissible (Woody Allen)
    0
  2. Nicocaine Messages postés 7 Date d'inscription   Statut Membre
     
    j'ai trouvé une autre solution possible:

    je crée la table de la manière suivante:

    CREATE TABLE REQUESTER
    SELECT distinct(Requester) FROM TEMP_REQUESTER;

    et ensuite j'ajoute par modification de la table une nouvelle colonne qui créé l'auto incrementation:

    ALTER TABLE REQUESTER ADD id_requester INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ADD INDEX (id_requester);

    je pense que ta solution marche aussi car c'est à peut près le même principe.
    Merci bcp pour ta réponse
    0