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

PHP & Base de données Discussion :

Contrainte CHECK non respectée


Sujet :

PHP & Base de données

  1. #1
    ms7
    ms7 est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 114
    Points : 66
    Points
    66
    Par défaut Contrainte CHECK non respectée
    Salut,
    c sans doute tres bete mais je n´arrive pas a implementer un check dans une table exemple....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    mysql> CREATE TABLE foo (
        ->     id     serial PRIMARY KEY,
        ->     price  integer NOT NULL CHECK (price = 1 OR price = 2 OR price = 3)
        -> );
    Query OK, 0 rows affected (0.01 sec)
     
    mysql> INSERT INTO foo (price) VALUES (3);
    Query OK, 1 row affected (0.00 sec)
    mysql> INSERT INTO foo (price) VALUES (0);
    Query OK, 1 row affected (0.00 sec)
    il ne devrait pas accepter la derniere insertion insertion...bizarre no?

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Votre code à l'aide correct (en tout cas si je transpose pour Oracle) :
    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
    16
    17
    18
    19
    20
     
    8i ALEX>
      1  CREATE TABLE foo (
      2  price  number(1) NOT NULL CHECK (price = 1 OR price = 2 OR price = 3)
      3* )
    8i ALEX> /
     
    Table créée.
     
    8i ALEX> insert into foo values (&val);
    Entrez une valeur pour val : 1
     
    1 ligne créée.
     
    8i ALEX> /
    Entrez une valeur pour val : 0
    insert into foo values (0)
    *
    ERROR à la ligne 1 :
    ORA-02290: check constraint (ALEX.SYS_C0033311) violated
    Je ne connais pas plus que ça MySQL mais vous êtes sûr que vos ordres ne sont pas mis dans une file d'attente jusqu'à ce que vous effectuiez un COMMIT (etc.) ?
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  3. #3
    ms7
    ms7 est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    mysql> CREATE TABLE foo (id serial PRIMARY KEY, price  number(1) NOT NULL CHECK (price = 1 OR price = 2 OR price = 3) );
    ERROR 1064 (42000): You have an error in your SQL syntax;
    check the manual that corresponds to your MySQL server version
    for the right syntax to use near
    'number(1) NOT NULL CHECK (price = 1 OR price = 2 OR price = 3) )' at line 1
    mysql>
    impossible de creer la table....Pourkoi?

  4. #4
    ms7
    ms7 est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    mysql> CREATE TABLE foo (id serial PRIMARY KEY, price ENUM('a','b'));
    Query OK, 0 rows affected (0.00 sec)
     
    mysql> insert into foo (price) values('c');
    Query OK, 1 row affected, 1 warning (0.01 sec)
     
    mysql> select * from foo;
    +----+-------+
    | id | price |
    +----+-------+
    |  1 |       |
    +----+-------+
    1 row in set (0.00 sec)
    je n´y comprend plus rien

Discussions similaires

  1. Mapping Table SQLite non respect des contraintes
    Par oneshoot dans le forum ADO.NET
    Réponses: 2
    Dernier message: 08/02/2011, 17h22
  2. Réponses: 7
    Dernier message: 24/11/2008, 16h55
  3. Ce qui se passe à un check non respecté
    Par bruce-willis dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 09/09/2008, 13h33
  4. Insertion données avec contrainte non respectée
    Par yoyostras dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/05/2008, 17h20
  5. Contraintes de clés étrangères non respectées
    Par parfait dans le forum Requêtes
    Réponses: 7
    Dernier message: 28/07/2004, 13h48

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