|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre éclairé
![]() Inscription : décembre 2007 Messages : 426 ![]() |
[Suite à la discussion http://www.developpez.net/forums/sho....php?t=481941]
L'intégrité des relations entre les tables n'est pas forcément géré par MySql, on peux ne pas préciser d'intégrité et le gérer soit même. En consultant la documentation, je n'ai pas réussi à trouver à quoi servait vraiment , dans la définition de la colonne, mais ca suffit pas pour que MySql gère l'intégrité. Pour que MySql gère l'intégrité, et donc empèche d'inserer une commande si le client n'existe pas il faut définit une FOREIGN KEY (clé étrangère) sur la table commande. Bizzare la syntaxe de tes CREATE, tu es sur qu'il les accepte comme ca ? Tu défini le format de la clé primaire dans PRIMARY KEY ? m'etonne que ca marche, de plus tu devrais plutôt mettre le numéro de client en clé primaire. Essaye plutot ca un truc du genre : ![]() Code :
|
||
|
|
00
|
|
|
#2 | ||
|
Membre éclairé
![]() Inscription : décembre 2007 Messages : 426 ![]() |
Je connais pas InnoDB, mais je pense qu'il utilise MySQL
Ca donnerait plutot : Code :
|
||
|
|
00
|
|
|
#3 | |||
|
Membre éclairé
![]() Inscription : décembre 2007 Messages : 426 ![]() |
Citation:
Code :
Sinon je comprend pas la syntaxe de maniravitch qui défini des clés sur des colonnes qui sont pas définis, c'est possible ? ca défini peut-être les colonnes en même temps que les clé. |
|||
|
|
00
|
|
|
#4 | ||||||
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Citation:
Citation:
Code :
Code :
|
||||||
|
|
00
|
|
|
#5 | |
|
Membre éclairé
![]() Inscription : décembre 2007 Messages : 426 ![]() |
Ok merci de ces infos, je suis un ancien de DB2 (sous MVS gros système), alors je connais pas ces nouvelles syntaxes.
Citation:
Par contre je pense que tu avais bien une erreur de logique car tu mettais num_client en clé primaire de la table commande, mais je pense que c'étais une erreur d'inatention |
|
|
|
00
|
|
|
#6 |
|
Membre éclairé
![]() Inscription : décembre 2007 Messages : 426 ![]() |
Arf, je viens de regarder l'autre post, ton erreur n'y est plus, aurais mal vu
|
|
|
00
|
|
|
#7 |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Je peux, mais j'ai pas !
|
|
|
00
|
|
|
#8 | |
|
Membre éclairé
![]() Inscription : décembre 2007 Messages : 426 ![]() |
Bon ok, pourtant je regarde toujours à 2 fois avant de signaler une erreur.
Sinon une petite question, à quoi sert REFERENCES sur une colonne sans FOREIGN KEY, j'ai vu ca dans la doc : Citation:
|
|
|
|
00
|
|
|
#9 | ||
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Apparemment, c'est pour créer la clé étrangère après la définition de la colonne. J'aurais donc pu faire la même table comme ça :
Code :
|
||
|
|
00
|
|
|
#10 |
|
Membre éclairé
![]() Inscription : décembre 2007 Messages : 426 ![]() |
Ok, a tester, merci
|
|
|
00
|
|
|
#11 | |||||
|
Membre éclairé
![]() Inscription : décembre 2007 Messages : 426 ![]() |
Code :
Citation:
Code :
|
|||||
|
|
00
|
|
|
#12 | |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Citation:
|
|
|
|
00
|
|
|
#13 | |
|
Membre éclairé
![]() Inscription : décembre 2007 Messages : 426 ![]() |
Je vois le contraire moi, juste après :
Citation:
Code :
InnoDB ne crée pas automatiquement les INDEX nécessaires pour les clés étrangères : vous devez ls créer vous-même. Les INDEX sont nécessaires pour accélérer les vérifications de contrainte, et éviter un scan de TABLE.
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com