Bonjour,
J'expose mon problème qui me rends chèvre depuis 1 heure et demi, et j'espère avoir une réponse car je vais bientôt effectuer un hurlement primaire!!
Je voudrais créer une contrainte de clés étrangères sur plusieurs colonnes d'une autre table, jusque là rien de bien compliqué...
J'essaye une requête, puis après dans phpmyadmin je regarde si mes contraintes d'intégrités sont prises en compte,... et bien non, il ne prends que la première des 2 colonnes que j'ai déclaré (pourtant l'index est bien crée sur les 2 colonnes) !!
J'ai même essayé avec l'exemple donné sur le site de mysql (code ci dessous), qui me donne le même résultat (j'ai essayé sur un serveur Mysql 5.0 et 5.1 dans le doute)!
Pour ce code là, dans phpmyadmin, je ne vois que la contrainte de product_category, pour product_id il me dit qu'aucun index est défini!!!
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 CREATE TABLE product (category INT NOT NULL, id INT NOT NULL, price DECIMAL, PRIMARY KEY(category, id)) TYPE=INNODB; CREATE TABLE customer (id INT NOT NULL, PRIMARY KEY (id)) TYPE=INNODB; CREATE TABLE product_order (no INT NOT NULL AUTO_INCREMENT, product_category INT NOT NULL, product_id INT NOT NULL, customer_id INT NOT NULL, PRIMARY KEY(no), INDEX (product_category, product_id), FOREIGN KEY (product_category, product_id) REFERENCES product(category, id) ON UPDATE CASCADE ON DELETE RESTRICT, INDEX (customer_id), FOREIGN KEY (customer_id) REFERENCES customer(id)) TYPE=INNODB;
Cf : pièce jointe.
Si vous avez des réponses à me donner, elles seront les bienvenues car la je sèche![]()
Partager