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 :

Insert : id auto-incrementé et utilisation de cet id


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juin 2009
    Messages : 138
    Points : 159
    Points
    159
    Par défaut Insert : id auto-incrementé et utilisation de cet id
    Bonjour,

    j'ai un petit soucis concernant une requête d'insertion dans ma base mysql...

    J'insère une ligne dont l'id est incrémenté automatiquement, et dont la valeur d'une autre colonne dépend de la valeur de cet id...

    Voici ma requête (simplifiée) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO maTable
    VALUES (DEFAULT, LAST_INSERT_ID() + 10)
    J'ai vu que la fonction LAST_INSERT_ID() me permettait de récupérer le nombre généré en auto-increment...

    Cependant, elle me retourne la valeur 0.

    Comment faire pour récupérer la valeur insérée par DEFAULT svp ?

    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
    salut,

    peux tu préciser ton besoin?
    je pense que tu ne peux pas le faire directement mais je ne comprends pas l'intérêt de redonder l'information
    si ta colonne vaut ton id+10 comme dans ton exemple, il est inutile de remplir une table pour calculer cela

  3. #3
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juin 2009
    Messages : 138
    Points : 159
    Points
    159
    Par défaut
    Cet exemple était juste pour silmplifier...

    En fait, je voudrais qu'un script s'exécute périodiquement, chaque semaine (pour ça, a priori, c'est ok).

    Le script exécuté en question doit insérer dans une table appelée Semaine, un id, l'index de la semaine, la date de début, et la date de fin de la semaine. Pour les 2 dernières colonnes (les 2 dates), je me suis pas encore penché sur le problème, mais pour l'index de la semaine (compris entre 1 et 52), le calcul devrait se faire de la logique suivante : index = (id % 52) + 1...
    D'où mon problème de récupérer l'id auto-incrémenté.

    La colonne index étant not null, j'ai pensé à insérer la ligne en précisant une valeur quelconque (ex: 0) pour l'index, et exécuter ensuite un update sur cette ligne. et là, je pense que ma fonction last_insert_id () devrait me renvoyer la bonne valeur...
    J'ai pas encore testé.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    En bidouillant avec les fonctions de date de MySQL, tu devrais pouvoir obtenir un truc du genre année-num_semaine.
    Regarde du côté des fonctions YEAR et WEEK, concatène le tout avec un tiret et ça devrait le faire tout seul sans avoir besoin d'une truc compliqué avec l'ID auto-incrémenté.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juin 2009
    Messages : 138
    Points : 159
    Points
    159
    Par défaut
    Merci CinePhil pour ton aide. En effet, il existe une fonction toute bête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT WEEK('ma_date');


    Mais je viens de résoudre mon problème hier matin, en faisant ma petite manip (insert + update), et je dois mettre en recette mon travail après-demain. Si j'ai un peu de temps, je modifierai en utilisant cette manière qui a l'air beaucoup plus propre et efficace

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

Discussions similaires

  1. probleme Insert Id auto-increment
    Par linuxien_62 dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 27/05/2013, 14h40
  2. INSERT avec auto-increment
    Par sly60 dans le forum Paradox
    Réponses: 1
    Dernier message: 26/07/2011, 14h49
  3. [MySQL] Obtenir la valeur de l'auto-increment lors d'une insertion
    Par yazerty dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 08/01/2006, 15h18
  4. [JDBC] Insertion dans Access auto Increment
    Par sg-40 dans le forum JDBC
    Réponses: 4
    Dernier message: 09/11/2005, 22h14
  5. Réponses: 2
    Dernier message: 05/01/2004, 11h23

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