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

SQL Procédural MySQL Discussion :

problème insoluble avec CHECK


Sujet :

SQL Procédural MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2003
    Messages : 13
    Points : 12
    Points
    12
    Par défaut problème insoluble avec CHECK
    bonjour !
    G un problème que je ne parviens vraiment pas à résoudre et ce n'est pas faute d'avoir esseyer.

    J'ai tenter durant toute l'après-midi de me battre avec le check mais je dois bel et bien m'avouer vaincu. Je voulais simplement mettre une contrainte sur une table (à savoir : faire en sorte qu'une adresse email soit bien de la forme bidul@machin.com). Après bien 2 heures je me suis décidé à esseyer avec un exmeple pris sur le web.

    J'ai donc simplement esseyé avec cette exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE voiture
    (VTR_ID                INTEGER       NOT NULL PRIMARY KEY,
     VTR_MARQUE            CHAR(32)      NOT NULL,
     VTR_MODELE            VARCHAR(16),
     VTR_IMMATRICULATION   CHAR(10)      NOT NULL UNIQUE,
     VTR_COULEUR           CHAR(16),      
     constraint cool CHECK (VTR_COULEUR IN ('BLANC', 'NOIR', 'ROUGE', 'VERT', 'BLEU')))
    TYPE=INNODB;
    Ensuite j'esseye d'ajouter un ligne à la table et là il se passe ce qui se passait avec l'adresse email : il l'ajoute même si elle ne correspond pas au format.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    mysql> INSERT INTO voiture VALUES (1, 'DUPONT', 'test','test','test');
    Query OK, 1 row affected (0.00 sec)
    mysql> INSERT INTO voiture VALUES (2, 'DUPONT2', 'test2','test2','BLEU');
    Query OK, 1 row affected (0.00 sec)
    Et là je dois avouer que je n'y comprend vraiment plus rien.

    Cet aprem j'ai tenté la manip sur un serveur mysql 3.23 et là je viens de le faire chez moi sur un serveur 4.0.15 et C toujours l e même résultat.

    Celui qui me sort de la aura ma reconnaissance éternelle.

    merci d'avance

    PS: comment pourrais je être sur que le support innodb est actif ? Et s'ikl ne l'est pas comment faire pour l'activer ?

  2. #2
    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
    Je crains que tes efforts n'aient servi à rien, mySQL ne gère pas les contraintes de type CHECK. Il ne fait qu'accepter la syntaxe, sans réel effet

    Regarde du côté des types SET et ENUM qui ont un comportement similaire (bien qu'ils remplaçent les valeurs erronnées par des valeurs nulles me semble-t-il) : http://www.mysql.com/doc/en/constraint_enum.html

    En ce qui concerne le support InnoDB, il est activé par défaut dans les versions supérieures à 3.23. Avant, il faut ajouter des options dans les fichiers de configuration : http://www.mysql.com/doc/fr/InnoDB_start.html

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2003
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    merci

    je pouvais encore chercher longtemps.

    Mais avec quoi fonctionne check alors ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2003
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    je viens de regarder les effets de set et enum ... c'est bcp moins puissant que CHECK.

    Ce que j'aimerais faire par exemple C vérifier que des adresses emails sont bien de la forme xxx@xxx.com.

    Ou encore par exemple :

    Il y a 2 tables : une qui contient les membres d'u club (nom, prénom,fonction,identifiant) et une autre les opérations bancaires du club (identifiant de la personne ayant réalisé l'opération,montat de la transaction, date). Je voudrais avoir une contrainte qui ne permettent d'ajout dans la table des opérations bancaires que si l'identifiant correspond à un membre dont la fonction est trésorier.

    COmment puis je faire cela avec mysql ?

    merci d'avance

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2003
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    je viens de regarder les effets de set et enum ... c'est bcp moins puissant que CHECK.

    Ce que j'aimerais faire par exemple C vérifier que des adresses emails sont bien de la forme xxx@xxx.com.

    Ou encore par exemple :

    Il y a 2 tables : une qui contient les membres d'u club (nom, prénom,fonction,identifiant) et une autre les opérations bancaires du club (identifiant de la personne ayant réalisé l'opération,montat de la transaction, date). Je voudrais avoir une contrainte qui ne permettent d'ajout dans la table des opérations bancaires que si l'identifiant correspond à un membre dont la fonction est trésorier.

    COmment puis je faire cela avec mysql ?

    merci d'avance

  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
    Citation Envoyé par NiBicUs
    Mais avec quoi fonctionne check alors ?
    Avec la plupart des autres SGBD : Oracle, PostgreSQL, SQL server...

    Citation Envoyé par NiBicUs
    Ce que j'aimerais faire par exemple C vérifier que des adresses emails sont bien de la forme xxx@xxx.com.
    C'est le genre de choses qu'on peut gérer dans du code. Malheureusement si SET et ENUM ne te conviennent pas, il n'y a pas d'autre solution.

    Citation Envoyé par NiBicUs
    Je voudrais avoir une contrainte qui ne permettent d'ajout dans la table des opérations bancaires que si l'identifiant correspond à un membre dont la fonction est trésorier.

    COmment puis je faire cela avec mysql ?
    Même réponse, il faut passer par du code. D'ailleurs, dans les autres SGBD ce n'est gérable que par des triggers ou des procédures (ce que mySQL ne propose pas pour l'instant).

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2003
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    merci bcp

    sans toi je serais toujours en train de me demander pq ça ne fonctionne pas

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

Discussions similaires

  1. Problème insoluble avec COM1 et RXTX
    Par matth_mm dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 31/01/2011, 17h23
  2. Problèmes insolubles avec Vim
    Par Oniwaba dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 18/12/2009, 13h54
  3. Problème avec CHECK EN SQL
    Par kohan95 dans le forum SQL
    Réponses: 2
    Dernier message: 24/11/2009, 15h12
  4. [VS 2005] [MenuStrip] Problème avec "checked"
    Par Gold.strike dans le forum Visual Studio
    Réponses: 1
    Dernier message: 22/08/2006, 17h22
  5. problème JSP avec JBuilder et Weblogic 7
    Par viny dans le forum JBuilder
    Réponses: 2
    Dernier message: 24/04/2003, 08h07

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