Problème avec les clés étrangères
Bonjour
Je voudrais savoir comment marche les clés étrangères sous mysql. Pour cela j'ai crée 2 tables : client et coordonnee.
L'idée est qu'un client peut avoir plusieurs coordonnées.
Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| CREATE TABLE `client`
(
`id` INT( 11 ) NOT NULL AUTO_INCREMENT,
`nom` VARCHAR( 50 ) NOT NULL,
`prenom` VARCHAR( 50 ) NOT NULL,
PRIMARY KEY (`id`),
) TYPE=INNODB
ENGINE=MyISAM
DEFAULT CHARSET=utf8 AUTO_INCREMENT=1
COMMENT = 'table contenant les clients'
;
CREATE TABLE `coordonnee`
(
`id` INT( 11 ) NOT NULL AUTO_INCREMENT,
`id_client` INT( 11 ) NOT NULL,
`adresse` LONGTEXT NOT NULL COMMENT 'adresse postale',
`code_postal` VARCHAR( 20 ) NOT NULL,
`ville` VARCHAR( 50 ) NOT NULL,
`telephone` VARCHAR( 20 ) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY(id_client) REFERENCES client(id) ON DELETE CASCADE
) TYPE=INNODB
ENGINE=MyISAM
DEFAULT CHARSET=utf8 AUTO_INCREMENT=1
COMMENT = 'table contenant les coordonnées d un client'
; |
Cependant je peux insérer des données dans la table coordonnee sans qu'il y ait de client associé. ex :
Code:
1 2
| INSERT INTO `coordonnee` (`id`, `id_client`, `adresse`, `code_postal`, `ville`, `telephone`)
VALUES (1, 1, '1 rue des halles', '75001', 'Paris', '0102030405'); |
J'aurai pensé avoir une erreur du genre "le client 1 n'existe pas" non ?
ensuite je crée un client :
Code:
1 2
| INSERT INTO `client` ( `id` , `nom` , `prenom` )
VALUES ('1', 'toto', 'titi'); |
si je le supprime j'aurai pensé que ça supprimerai la coordonnée associée, mais ce n'est pas le cas.
Je me suis trompé quelque part ?
merci de votre aide
PoichOU