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

MySQL Discussion :

Contrainte check sur attribut


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    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
    Par défaut Contrainte check sur attribut
    Bonjour, je suis en train de développer une base de donnée sous mysql. Je souhaite ajouter des contraintes de domaine de valeurs sur certains attributs et cela ne fonctionne pas.

    J'ai beau essayer de mettre n'importe quoi sur ces attributs et ça écrit quand même. J'ai fais pas mal de recherche depuis hier mais il y a pas grand chose à ce sujet. Merci d'avance de votre réponse.

    Voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE Conteneur(
    `identifiantConteneur` CHAR(6),
    `client` CHAR(9) NOT NULL,
    `emplacement` CHAR(10),
    `nombrePresent` INTEGER(2) NOT NULL,
    `etat` CHAR(9) NOT NULL CHECK (etat IN('COMPLET', 'PARTIEL', 'SUPPRIME', 'VIDE'))
    );
    ALTER TABLE Conteneur ADD PRIMARY KEY (identifiantConteneur, client);

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 135
    Par défaut
    Essaie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE TABLE Conteneur(
    `identifiantConteneur` CHAR(6),
    `client` CHAR(9) NOT NULL,
    `emplacement` CHAR(10),
    `nombrePresent` INTEGER(2) NOT NULL,
    `etat` CHAR(9) NOT NULL,
     Constraint CHK_ETAT  CHECK (etat IN('COMPLET', 'PARTIEL', 'SUPPRIME', 'VIDE')),
    Constraint PK_CONTENEUR PRIMARY KEY (identifiantConteneur, client);
    );

  3. #3
    Membre chevronné
    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
    Par défaut
    Merci pour ta réponse, mais non je peux toujours faire entrer n'importe quoi...

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 135
    Par défaut
    Je viens de trouver une information qui dit que Mysql implémente Check
    mais la clause n'est pas considérée d'où ton problème.

    Il propose une alternative c'est ENUM

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    CREATE TABLE Conteneur(
    `identifiantConteneur` CHAR(6),
    `client` CHAR(9) NOT NULL,
    `emplacement` CHAR(10),
    `nombrePresent` INTEGER(2) NOT NULL,
    `etat` CHAR(9) NOT NULL ENUM ('COMPLET', 'PARTIEL', 'SUPPRIME', 'VIDE'),
    Constraint PK_CONTENEUR PRIMARY KEY (identifiantConteneur, client);
    );

  5. #5
    Membre chevronné
    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
    Par défaut
    J'avais aussi vu cet article. J'avais fais comme toi, et ça génère une erreur de syntaxe. En fait il faut créer une autre table avec un attribut. C'est ça l'énumération. Mais ils n'expliquent pas le lien avec une autre table.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 135
    Par défaut
    En fait il faut créer un autre table avec un attribut
    Non, je pense que tu as mal saisi l'information.

    Si tu exécutes le script de création de table quelle erreur est générée?

Discussions similaires

  1. Avoir un message personnalisé sur une contrainte check
    Par brunoSCP dans le forum Débuter
    Réponses: 5
    Dernier message: 29/09/2016, 14h30
  2. Réponses: 2
    Dernier message: 05/04/2012, 10h54
  3. Valeur par défaut sur un attribut avec la contrainte check
    Par raffi88 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/11/2010, 17h46
  4. [Oracle 9i] contrainte CHECK sur le type date
    Par zchallal dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/06/2006, 11h34
  5. contraint CHECK avec lecture de données sur une autre table ?
    Par mamiberkof dans le forum Langage SQL
    Réponses: 1
    Dernier message: 22/05/2006, 09h14

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