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 :

Ca fonctionne vraiment comme ça ?


Sujet :

Requêtes MySQL

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 540
    Points : 532
    Points
    532
    Par défaut Ca fonctionne vraiment comme ça ?
    Bonjour,

    J'ai une table table dont une colonne ne doit pas être être nulle, n'a pas de valeur par défaut mais dépend fortement d'une autre colonne.
    J'ai toutefois un trigger AVANT insertion qui appelle une procédure qui détermine le champs non renseigné dans ma requete d'insertion et lui donne la valeur non nulle. En d'autre terme, il faudrait que le trigger ne se déclanche pas pour que la colonne ne soit pas renseignée...

    Il y a une solution : mettre une valeur débile qui de toute façon sera écrasée, mais ça ne me paraît pas fiable.

    Et vous ?

  2. #2
    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
    Je n'ai rien compris !

    Structure de la table et exemple pour aider à t'aider efficacement ?
    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 !

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 540
    Points : 532
    Points
    532
    Par défaut
    Bonjour,

    Voici une partie de ma table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    +--------------------------+----------+------+-----+---------+----------------+
    | Field                    | Type     | Null | Key | Default | Extra          |
    +--------------------------+----------+------+-----+---------+----------------+
    | id                       | int(11)  | NO   | PRI | NULL    | auto_increment |
    | dateNaissance            | date     | NO   |     | NULL    |                |
    | derniereConnexion        | datetime | YES  |     | NULL    |                |
    | signeAstrologique        | int(11)  | NO   | MUL | NULL    |                |
    | lieu                     | int(11)  | NO   | MUL | NULL    |                |
    | ...                      |          |      |     |         |                |
    +--------------------------+----------+------+-----+---------+----------------+
    Tout le monde le sait, le signe astro est déterminé à partir de la date de naissance. Donc, dans les instructions d'insertion, je ne veux pas renseigner le signe astro mais laisser le trigger qui va se charger de le faire (à l'aide d'une fonction stockée).

    Or, si je ne renseigne rien, MySQL me rappelle que le signe astro n'a pas de valeur par défaut .

    Pour que ça fonctionne, je dois mettre valeur (n'importe laquelle) qui sera écrasée par le trigger. Ca ne ma plait pas.

    Je peux joindre le code du triggeur si tu veux.

    Voici un exemple :

    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
     
     
    insert into membre (datenaissance, lieu) values ('1960-02-10', 560);
    ERROR 1364 (HY000): Field 'signeAstrologique' doesn''t have a default value
     
    insert into membre (datenaissance, lieu, signeAstrologique) values ('1918-02-10', 560, -1);
    Query OK, 1 row affected (0.06 sec)
     
    select id, dateNaissance, signeAstrologique, lieu from membre;
     
    +----+---------------+-------------------+------+
    | id | dateNaissance | signeAstrologique | lieu |
    +----+---------------+-------------------+------+
    |  5 | 1918-02-10    |                11 |  560 |
    +----+---------------+-------------------+------+
    J'insère -1 dans le signe astro et le trigger mets 11 (qui est la bonne valeur). Ce que j'aimerais, c'est de pouvoir ne mettre aucune valeur plutôt que de mettre n'importe quoi.

  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
    Demander à une colonne d'être DEFAULT NULL alors qu'elle est NOT NULL n'a pas de sens !
    Je suis même étonné que MySQL l'autorise mais MySQL est trop permissif pour d'autres choses alors il ne faut plus s'étonner de rien avec ce mauvais SGBD !

    Chez MySQL, la valeur par défaut est :
    - pour une colonne de type CHAR, VARCHAR, TEXT : une chaîne vide '' ;
    - pour une colonne numérique : 0 ;
    - pour une date : '0000-00-00'.

    Change cette aberration dans la structure de ta table.
    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 confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 540
    Points : 532
    Points
    532
    Par défaut
    Merci Cinephil.

    MySQL met lui-même une valeur par défaut lorsque l'on ne défini rien. Or, le signe astro faisant référence à ma table des signes astro. Je peux mettre 0 mais ça ne me plait pas plus. Ce qui aurait été bien c'est que ça soit le trigger qui soit interprété avant l'analyse de la requete : principe du trigger BEFORE INSERT... comme ça le trigger renseigne la donnée avec analyse de la requête.

Discussions similaires

  1. requete qui ne fonctionne pas comme je shouterais
    Par domino_dj dans le forum Requêtes
    Réponses: 1
    Dernier message: 04/04/2007, 12h27
  2. Réponses: 8
    Dernier message: 11/10/2006, 16h41
  3. Réponses: 3
    Dernier message: 02/10/2006, 21h13
  4. un if qui ne fonctionne pas comme je veux
    Par Kelly182 dans le forum Access
    Réponses: 4
    Dernier message: 27/07/2006, 15h12
  5. time.sleep() ne fonctionne pas comme souhaité
    Par Olivier_ dans le forum Général Python
    Réponses: 3
    Dernier message: 19/11/2005, 01h46

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