Bonjour à tous,
J'écris ici après de longues heures passées sur Google et quelques poignées de cheveux arrachées .
J'ai un shcéma de BDD assez complexe, alors j'ai simplifié un peu le truc pour qu'on s'emmêle pas les pinceaux :
J'ai donc une table "personne", une table "débat", et une table de liaison "personne_participe_debat" (vu qu'une personne peut participer à plusieurs débats, et qu'un débat peut contenir plusieurs personnes).
Mon souci, c'est que lorsque j'essaye d'appliquer une contrainte ON UPDATE CASCADE et ON DELETE SET NULL sur les 2 clefs primaires (qui sont des clefs étrangères) de la table "personne_participe_debat" (qui a donc les clef étrangères de "personne" et de "débat" comme clefs primaires) et bien j'ai une erreur :
Executing SQL script in server
ERROR: Error 1005: Can't create table 'mydb.personne_participe_debat' (errno: 150)
Des idées ?
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 CREATE TABLE IF NOT EXISTS `mydb`.`personne_participe_debat` ( `personne_id` INT(11) NOT NULL , `debat_id` INT(11) NOT NULL , PRIMARY KEY (`personne_id`, `debat_id`) , INDEX `fk_personne_has_debat_debat1` (`debat_id` ASC) , INDEX `fk_personne_has_debat_personne` (`personne_id` ASC) , CONSTRAINT `fk_personne_has_debat_personne` FOREIGN KEY (`personne_id` ) REFERENCES `mydb`.`personne` (`id` ) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `fk_personne_has_debat_debat1` FOREIGN KEY (`debat_id` ) REFERENCES `mydb`.`debat` (`id` ) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE = InnoDB DEFAULT CHARACTER SET = latin1 COLLATE = latin1_swedish_ci SQL script execution finished: statements: 3 succeeded, 1 failed
Partager