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 :

AUTO_INCREMENT qui ne se fait pas


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 38
    Points : 23
    Points
    23
    Par défaut AUTO_INCREMENT qui ne se fait pas
    bonjour
    une question bete je pense mais je rencontre un problème dans ma base avec les AUTO_INCREMENT sur mes ID.
    j ai beau dire a la conception de procéder a une AUTO_INCREMENT mais lors d'une requête d insertion dans ne table rien ne ce passe du coup je suis obliger de faire une requête pour lui dire de faire +1 pour l id.

    ci-dessous le code d une table

    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
     
    CREATE TABLE `epreuve` (
      `Id` int(11) NOT NULL AUTO_INCREMENT,
      `Nom_epreuve` varchar(255) NOT NULL,
      `Id_epreuve` tinyint(4) NOT NULL,
      `Id_circuit` tinyint(11) NOT NULL,
      `Date_debut` date NOT NULL,
      `Date_fin` date NOT NULL,
      `Annee` varchar(11) NOT NULL,
      `Nbr_com_mini` varchar(50) NOT NULL,
      `Nbr_com_max` varchar(50) NOT NULL,
      `essai` varchar(10) NOT NULL,
      `Active` varchar(10) NOT NULL
      PRIMARY KEY (Id)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Table sur les epreuves';
    une idée du probleme?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 38
    Points : 23
    Points
    23
    Par défaut
    bon ben j ai refait mes table une par une et ca a l air de fonctionner maintenant .

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 910
    Points
    38 910
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    L'auto incrément ne s'applique que dans la table où la colonne est déclarée comme telle, pas dans les tables qui héritent de cette colonne sous forme de clef étrangère.

    Par exemple, soit une table des clients ou l'identifiant client (ID_CLI) est déclarée comme PK auto_increment, lors de l'insertion dans cette table, la valeur de la colonne ID_CLI est affectée automatiquement par le moteur du SGBD.
    Par contre, dans la table des commandes, la valeur de cette même colonne héritée comme foreign key devra être alimentée lors de l'insert.
    On récupèrera la valeur de la table client pour alimenter celle de la table commande.

    Quelques remarques :
    • le moteur MyISAM est complètement obsolète, il ne gère notamment pas l'intégrité référentielle ! À remplacer par INNODB
    • le typage des données est une chose importante, déclarer ce qui ressemble à des montants (ex. Nbr_com_mini) dans une colonne varchar est une aberration, de même, l'année dans du varchar(11) n'a aucun intérêt, à remplacer par du char(4) puisqu'aucun calcul ne sera appliqué sur cette colonne.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    ... l'année dans du varchar(11) n'a aucun intérêt, à remplacer par du char(4) puisqu'aucun calcul ne sera appliqué sur cette colonne.
    D'abord je pense qu'il à raison de prévoir large.... Il me semble que pouvoir mettre l'an 99 999 999 999 permettra d'éviter le bug de l'an 10 000 et les autres...

    En revanche, des calculs sur des années, ça existe.... Dont le mettre en smallint par exemple.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Frédéric

    Ta réponse laisse entendre qu'on peut ne pas utiliser les fonctions "Date" proposées en SQL ?

    Dans quel cas, il serait plus intéressant de faire des calculs que d'utiliser ces fonctions ?

    Merci d'avance

    Pierre

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    dans tous les cas OUI... Pour des raisons de perf...

    C'est aussi pour cela que dans les BI (cube et autres) on ajoute une table de calendrier afin d'éviter trop d'appel aux fonctions.

    RAPPEL : x appel de fonctions => x fois le temps d'exécution de la fonction, même si les paramètres d'entrée et le résultat est le même.. En revanche dans une jointure si les données sont les mêmes, le résultat sera le même donc, le moteur ne fait qu'une seule fois l'opération... En sus s'il y a des index, du parallélisme et de la compression... C'est le bonheur assuré !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Merci pour l'info

    A plus tard

    Pierre

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

Discussions similaires

  1. [Mail] Envoi d'e-mail qui ne se fait pas
    Par sam01 dans le forum Langage
    Réponses: 3
    Dernier message: 26/07/2007, 10h41
  2. rsync : sauvegarde incrementale qui ne se fait pas
    Par nixonne dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 22/07/2007, 12h11
  3. [Tableaux] création de tableau qui ne se fait pas
    Par mussara dans le forum Langage
    Réponses: 2
    Dernier message: 01/11/2006, 21h44
  4. Test qui ne se fait pas
    Par GLDavid dans le forum Linux
    Réponses: 12
    Dernier message: 07/03/2006, 14h57
  5. Pb de selection qui ne se fait pas
    Par Stef.proxi dans le forum Langage SQL
    Réponses: 4
    Dernier message: 06/08/2004, 10h54

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