Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & Oracle
PHP & Oracle Forum d'entraide sur Oracle avec PHP. Avant de poster -> FAQ Oracle et Cours Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/07/2006, 16h44   #1
ms7
Nouveau Membre du Club
 
Inscription : décembre 2005
Messages : 114
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : décembre 2005
Messages : 114
Points : 37
Points : 37
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 :
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?
ms7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2006, 16h48   #2
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Votre code à l'aide correct (en tout cas si je transpose pour Oracle) :
Code :
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.) ?
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2006, 16h53   #3
ms7
Nouveau Membre du Club
 
Inscription : décembre 2005
Messages : 114
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : décembre 2005
Messages : 114
Points : 37
Points : 37
Code :
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?
ms7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2006, 17h02   #4
ms7
Nouveau Membre du Club
 
Inscription : décembre 2005
Messages : 114
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : décembre 2005
Messages : 114
Points : 37
Points : 37
Code :
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
ms7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h45.


 
 
 
 
Partenaires

Hébergement Web