Quand je cherche � cr�er mes tables sans faire d'index, j'obtiens ce message d'erreur:
ERROR 1005 at line 19: Can't create table './Gcos/Cmd_gcos.frm' (errno: 150) Quand je cherche � cr�er mes tables en ne faisant que un seul index (un index sur une des colonnes en cl� primaire): CREATE TABLE Cmd_gcos ( Num_Commande INT(255) NOT NULL AUTO_INCREMENT, Nom_Commande VARCHAR(100) NOT NULL, Description TEXT NOT NULL, Num_Type INT(255), Num_Periode INT(255), PRIMARY KEY (Num_Commande,Num_Type), INDEX N_Type (Num_Type), FOREIGN KEY (Num_Periode) REFERENCES Periodicite(Num_Periode), FOREIGN KEY (Num_Type) REFERENCES Type(Num_Type) ) TYPE=InnoDB ; Pareil m�me message d'erreur. Si on googlelise un peu, on tombe sur une jolie doc: http://melmoth.dyndns.org/mysql/ Je crains que les index ne soient obligatoires avec MySQL quand on veut exploiter les foreign key en innoDB.... <troll> peut-�tre pas avec PostGreSQL </troll> Laurent Le jeu 19/02/2004 � 18:47, Jean-Michel OLTRA a �crit : > Le jeudi 19 f�vrier 2004, Laurent Oliva a �crit... > bonjour, > > > > Ensuite, j'ai lu dans la doc qu'il fallait cr�er un index pour pouvoir > > exploiter les FOREIGN KEY, j'ai donc modifi� mon script en cons�quence: > > Ah ? Dans le sgbd dont je me sers il est sp�cifi�, pour les FK: > > If referenced columns are specified that are not the key in the > referencing table, the referenced table must have a UNIQUE definition > whose column names and sequence match those of the referenced columns. > > pour une syntaxe: > > <referential_constraint_definition> ::= > FOREIGN KEY [<referential_constraint_name>] (<referencing_column>,...) > REFERENCES <referenced_table> [(<referenced_column>,...)] > [<delete_rule>] > > > PRIMARY KEY (Num_Periode) > > PRIMARY KEY (Num_Type) > > > FOREIGN KEY (Num_Periode) REFERENCES Periodicite(Num_Periode), > > FOREIGN KEY (Num_Type) REFERENCES Type(Num_Type) > > Dans ton cas: > Les cl� �trang�res (referencing columns) ne sont pas des cl�s de ta > table (referencing table), mais les 'referenced columns' sont cl�s > primaires des 'referenced tables', donc 'unique'. > > Alors c'est � regarder pour InnoDB de plus pr�s, j'ai franchement la > flemme de le faire. > > Tu ne devrais pas avoir besoin d'indexer celles-ci, d'autant: > * qu'un index est inutile si la table est peu importante (moins de 1000 > enregistrements je crois, �a va d�pendre de ta base) > * qu'il n'est pas utilis� si la requ�te ram�ne plus de 25-30% de donn�es > (�a d�pend du sgbd, et de ta requ�te) > > -- > jm >

