Retourner aux forums || Retourner au forum Programmation.SQL
Programmation.SQL : FOREIGN KEYS et MySQL....
Posté par David FRANCOIS (page perso, ) le 14 octobre 2006+-------------------+ | Tables_in_nf16 | +-------------------+ | Agence | | Locataire | | Personnel | | Proprietaire | | Propriete_a_louer | | Visite | +-------------------+ 6 rows in set (0.00 sec) mysql> DESC Agence; +-----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+--------------+------+-----+---------+----------------+ | numa | mediumint(9) | NO | PRI | NULL | auto_increment | | adresse | varchar(255) | NO | | NULL | | | telephone | varchar(10) | NO | | NULL | | +-----------+--------------+------+-----+---------+----------------+ 3 rows in set (0.00 sec) mysql> DESC Personnel; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | nump | mediumint(9) | NO | PRI | NULL | auto_increment | | nom | varchar(50) | NO | | NULL | | | prenom | varchar(50) | NO | | NULL | | | adresse | varchar(255) | NO | | NULL | | | fonction | varchar(30) | NO | | NULL | | | salaire | mediumint(9) | NO | | NULL | | | agence | mediumint(9) | NO | MUL | NULL | | +----------+--------------+------+-----+---------+----------------+ 7 rows in set (0.00 sec) mysql> ALTER TABLE Agence ADD FOREIGN KEY numa REFERENCES Personnel(agence) ON DELETE SET NULL ON UPDATE CASCADE; 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 'REFERENCES Personnel(agence) ON DELETE SET NULL ON UPDATE CASCADE' at line 1
Save the planet, kill yourself.
NB
Même après avoir rajouté le CONSTRAINT entre ADD et FOREIGN ca ne marche pas.
Save the planet, kill yourself.
Problème de syntaxe
Essaye ça :
alter table Agence add constraint foreign key (numa) references Personnel(agence) on delete set null;
ou ça (mais je pense que ça efface toute la ligne) :
alter table Agence add constraint foreign key (numa) references Personnel(agence) on delete cascade;
-
[^]Re: Problème de syntaxe
Posté par David FRANCOIS (page perso, ) le 14/10/2006 à 13:50. (lien). Évalué à 1.Ca me donne ca... J'ai essayé aussi l'inverse...
mysql> alter table Agence add constraint foreign key (numa) references Personnel(agence) on delete set null; ERROR 1005 (HY000): Can't create table './nf16/#sql-1d36_28d0.frm' (errno: 150) mysql> alter table Personnel add constraint foreign key (agence) references Agence(numa) on delete set null; ERROR 1005 (HY000): Can't create table './nf16/#sql-1d36_28d0.frm' (errno: 150)
--
Save the planet, kill yourself.-
[^]Histoire d'index ?
Posté par d-jo (page perso, ) le 14/10/2006 à 16:43. (lien). Évalué à 2.http://mysql.ifrance.com/showthread.php?t=252
Google est ton ami ;-)-
[^]Re: Histoire d'index ?
Posté par David FRANCOIS (page perso, ) le 14/10/2006 à 17:18. (lien). Évalué à 1.J'avais déjà mis en oeuvre la solution préconisée par ces pages, sans succès.
Mes champs de clef étrangère ont déjà un index. :(
Quelqu'un a une autre idée ?--
Save the planet, kill yourself.
-
-
Mauvaise table ?
Salut,
C'est bien la table Personnel qui logiquement devrait avoir la clé étrangère, n'est-ce pas ?
Alors le code SQL devrait être quelque chose comme:
ALTER TABLE Personnel ADD FOREIGN KEY numa_fk (agence) REFERENCES Agence(numa) ON DELETE SET NULL ON UPDATE CASCADE;
Bon je n'ai pas testé le code, mais je ne pense pas me tromper de beaucoup :-p
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.SQL



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.