|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Nouveau Membre du Club
![]() Inscription : septembre 2010 Messages : 62 ![]() |
Bonjour
J'ai peu l'habitude de faire des requêtes Mysql à la main, et là je dois dire que je bloque sur un truc assez simple à priori: la création d'une clé étrangère. Mon cas est simple, j'ai une table "membres" avec un champs "categorie_id", et une table "categories" avec un champs Id. "categorie_id" et "id" de categorie ont tous les deux la même structure (int11) Je voudrais mettre "categorie_id" en clé étrangère. Je précise que j'ai mis categorie_id en index, et que le champs "id" de la table categorie est en clé primaire. voilà ma syntaxe: Code :
Citation:
|
|||
|
|
00
|
|
|
#2 | |||
![]() ![]() |
Un coup d'oeil à la doc te donne la bonne syntaxe :
Citation:
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : septembre 2010 Messages : 62 ![]() |
Merci de ton aide, pour commencer
J'ai bien regardé la doc, je pensais avoir compris que le "CONSTRAINT" de "ADD CONSTRAINT" était facultatif... En tout cas même avec la requête que tu me proposes, j'ai le même message d'erreur...
|
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
C'est les quotes qui sont faux. Par contre je ne comprends pas à quoi sert la clause ON UPDATE puisque la primary key associée est censée être immuable.
Par contre le ON DELETE CASCADE lui est très utile. Je la créerai plutôt comme ça : Code :
|
||
|
|
00
|
|
|
#5 | |||
|
Nouveau Membre du Club
![]() Inscription : septembre 2010 Messages : 62 ![]() |
Citation:
Enfin de toute façon le but était surtout de faire une clé étrangère, c'est pas pour un projet particulier. |
|||
|
|
00
|
|
|
#6 | |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Citation:
Mais un membre ne peut appartenir qu'à une catégorie ? Le ON DELETE CASCADE a effectivement plus de sens dans le cas où on a : 1 table membre (id_membre,...) 1 table categorie (id_categorie,...) 1 table membre_categorie (id_membre, id_categorie) (relation (n,n) entre membre et categorie) Dans ce cas un ON DELETE CASCADE sur les clés étrangères créées sur membre_categorie permet de purger la table d'association lorsqu'un membre ou une catégorie est supprimé. Dans ton cas ce serait plutôt ON DELETE SET NULL (avec une colonne cateorie_id nullable) |
|
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : septembre 2010 Messages : 62 ![]() |
Merci pour ton explication, c'est très clair
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com