suppression à partir d'une table mysql Innod
salut,
j'ai créé une tables "serveur" comme suit:
Code:
1 2 3 4 5 6 7 8
|
CREATE TABLE serveur (
nom_machine varchar(20) NOT NULL,
IP_privee varchar(20) ,
IP_publique varchar(20),
PRIMARY KEY (nom_machine)
); |
Et une table "service":
Code:
1 2 3 4 5 6 7 8
|
CREATE TABLE service (
Id_service int(11) NOT NULL auto_increment,
nom_service varchar(20),
num_port int(20) NOT NULL,
path_log varchar(80),
PRIMARY KEY (Id_service)
); |
Et une table intermédiaire contenant les clé primaire de "serveur" et "service" comme suit:
Code:
1 2 3 4 5 6 7 8
|
CREATE TABLE serveur_service (
Id_service int(11) NOT NULL auto_increment,
nom_machine varchar(20) NOT NULL,
PRIMARY KEY (Id_service,nom_machine),
FOREIGN KEY(Id_service) REFERENCES service(Id_service) ON DELETE CASCADE,
FOREIGN KEY(nom_machine) REFERENCES serveur(nom_machine) ON DELETE CASCADE
);] |
les tables sont de type Myisam par défaut, alors j'ai changé le type des trois table en Innodb pour utiliser la notion de clé étrangère comme suit:
Code:
1 2
|
ALTER TABLE nom_table TYPE=Innod; |
j'ai fait les trois insertions suivante:
Code:
1 2 3 4
|
insert into serveur values ('dns','192.168.80.128','192.127.2.13');
insert into service (nom_service,num_port,path_log) values ('bind','12','fff');
insert into serveur_service (nom_machine) values ('dns'); |
l'option ON CASCADE permet de faire la suppression en cascade; alor en écrivant:
Code:
1 2
|
delete from serveur where nom_machine='dns'; |
la ligne ou nom_machine=dns est supprimé dans la table "serveur" mais ell n'est pas supprimée automatiquement dans la table "serveur_service"!!!! alors que ON DELETE CASCADA devrait servir à ça,autrement dit, suppratiquement l'enregistremnt de la table "serveur_service"
aidez moi svp à réaliser ce que je veux
merci d'avance