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 :
Cependant je peux insérer des données dans la table coordonnee sans qu'il y ait de client associé. ex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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' ;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
si je le supprime j'aurai pensé que ça supprimerai la coordonnée associée, mais ce n'est pas le cas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 INSERT INTO `client` ( `id` , `nom` , `prenom` ) VALUES ('1', 'toto', 'titi');
Je me suis trompé quelque part ?
merci de votre aide
PoichOU
Partager