IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Question insertion avec un champ auto_increment


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Question insertion avec un champ auto_increment
    Bonjour,
    Je vous donne un exemple pour illustrer ma question

    Table test

    id | Nom
    -------
    1 | toto
    2 | tata
    3 | titi
    4 | tutu

    Mon champ id est en clé primaire auto_increment, et je voudrais savoir comment faire pour inserer un enregistrement au milieu de ma table, comme ceci

    id | Nom
    -------
    1 | toto
    2 | tata
    3 | new
    4 | titi
    5 | tutu

    Sachant que si je fais INSERT INTO test VALUES('new',3), ca ne marche pas car l'id 3 existe deja...

    Merci d'avance

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    Bonjour,

    mettre un champ auto_increment permet justement de ne pas enseigner l'id. donc ce que tu fais est un peu contradictoire !
    sois tu met un champ autoincrement soit tu n'en met pas

    si tu choisis de ne pas en mettre pour pourvoir insérer un id enctre deux, il te faut au préalable faire un udpdate de 1 sur tes enregistrement qui ont un id supérieur ou égal a l'id que tu veux mettre

    bon courage

    Michel

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta reponse

    J'ai voulu créer une procedure qui me permettrait de decaler mon id, mais ca ne passe pas, je vois pas ou est l'erreur, pouvez vous m'aider




    CREATE PROCEDURE decale_index (numero_insere INT)
    BEGIN
    DECLARE cur CURSOR FOR select id from test where id >= numero_insere order by id desc;
    DECLARE temp_int SMALLINT DEFAULT 0;

    OPEN cur

    REPEAT
    FETCH cur INTO temp_int;

    UPDATE test
    SET id = temp_int + 1
    WHERE id = temp_int;

    UNTIL done END REPEAT;

    END

  4. #4
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Citation Envoyé par tirelipinpon
    ca ne passe pas
    C'est à dire ? Il y a un message d'erreur ou ça ne fait rien ?

    Par ailleurs pourquoi veux-tu insérer un id en décalant tous les autres ? Normalement un identifiant ne bouge pas, ça peut être dangereux notamment si des lignes d'autres tables y font référence...
    Pensez au bouton

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    En fait je n'utilise plus l'autoincrement.
    Mon identifiant me sert seulement a trier ma table

    Voici l'erreur
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOR select id from test where id >= numero_insere order by id desc' at line 3

    J'utilise Easyphp

  6. #6
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Ca serait pas la même erreur qu'ici : http://www.developpez.net/forums/sho...yphp+procedure ?
    Pensez au bouton

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Problème d'insert avec un champ de type DateTime
    Par mademoizel dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 05/05/2009, 03h45
  2. [MySQL] Insertion avec un champ de type date
    Par souadmaa dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 04/02/2008, 11h27
  3. Probleme d'insertion d'un champ auto_increment
    Par super-java dans le forum Requêtes
    Réponses: 3
    Dernier message: 12/12/2007, 12h08
  4. [SQL] Problème d'insertion du à un champ auto_increment ?
    Par toma03 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 11/06/2007, 16h29
  5. Problème d'insertion avec un champ Date/Heure ?
    Par bds2006 dans le forum Bases de données
    Réponses: 1
    Dernier message: 26/06/2006, 10h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo