bonjour,
j'ai plusieurs table
et un trigger
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 CREATE TABLE Spacewar.Element ( idElement INT NOT NULL AUTO_INCREMENT, positionX INT DEFAULT NULL, positionY INT DEFAULT NULL, PRIMARY KEY (idElement) ) ENGINE = InnoDB; CREATE TABLE Spacewar.Joueur ( idJoueur INT NOT NULL AUTO_INCREMENT, login VARCHAR (30) NOT NULL, password VARCHAR (30) NOT NULL, mail VARCHAR (50) NOT NULL, PRIMARY KEY (idJoueur) ) ENGINE = InnoDB; CREATE TABLE Spacewar.Vaisseau ( idVaisseau INT NOT NULL AUTO_INCREMENT, idElement INT NOT NULL, idJoueur INT NOT NULL, PRIMARY KEY (idVaisseau), FOREIGN KEY (idElement) REFERENCES Element(idElement) ON DELETE RESTRICT, FOREIGN KEY (idJoueur) REFERENCES Joueur (idJoueur) ON DELETE CASCADE ) ENGINE = InnoDB;
le probleme vient du fait que mysql ne lance pas le trigger si je delete un joueur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CREATE TRIGGER delVaisseau AFTER DELETE ON Vaisseau FOR EACH ROW BEGIN DELETE FROM Spacewar.Element WHERE idElement = OLD.idElement; END;
et donc les vaisseaux qui font référence au joueur que je delete sont bien deletés aussi mais le trigger n'est pas déclenché et je me retrouve avec des enregistrements dans la table Element qui ne sont plus référencés ...
comment je peux faire ?
j'ai pensé mettre dans la table Vaisseau
en pensant qu'il n'y aurai pas de modification sur la table
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 FOREIGN KEY (idJoueur) REFERENCES Joueur (idJoueur) ON DELETE NO ACTION
puis créer un trigger
malheuereusement ca ne passe toujours pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CREATE TRIGGER delJoueur AFTER DELETE ON Joueur FOR EACH ROW BEGIN DELETE FROM Spacewar.Vaisseau WHERE idJoueur = OLD.idJoueur; END;
please help
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2#1451 - Cannot delete or update a parent row: a foreign key constraint fails (`spacewar`.`vaisseau`, CONSTRAINT `vaisseau_ibfk_3` FOREIGN KEY (`idJoueur`) REFERENCES `joueur` (`idJoueur`) ON DELETE NO ACTION)
ca me parait etre un bete probleme mais je vois vraiment pas comment faire
ps:les tables sont plus compliquées, je les ai réduites au minimum pour ne garder que mon problème, donc il est possible que ce schéma n'ai pas beaucoup de sens
Partager