echec on delete : a Fk constraint fails
Bonjour à tous
J'utilise symfony 1.4.
J'ai le schéma suivant :
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 29 30 31 32 33
| detect_relations: true
Parcour:
actAs:
Timestampable: ~
columns:
sf_guard_user_id: integer
name:
type: string(255)
notnull: true
seance_id: integer
relations:
seance:
foreignAlias: parcours
relations:
sfGuardUser:
foreignAlias: Parcours
onDelete: CASCADE
ParcourVideo:
columns:
parcour_id:
type: integer
video_id:
type: integer
position:
type: integer
action_ident:
type: integer
relations:
parcour:
foreignAlias: ParcourVideos
video:
foreignAlias: ParcourVideos |
je lance la requête suivante :
Code:
1 2 3 4
| $qpar = Doctrine_Query::create()
->delete('Parcour p')
->where('id = ?', $parcour_id);
$qpar->execute(); |
J'ai l'erreur suivante :
Code:
1 2 3 4 5 6 7
| SQLSTATE[HY000]: General error: 1451
Cannot delete or update a parent row:
a foreign key constraint fails
(`thesite`.`parcour_video`,
CONSTRAINT `parcour_video_parcour_id_parcour_id`
FOREIGN KEY (`parcour_id`)
REFERENCES `parcour` (`id`)) |
Quelqu'un aurait-il la gentillesse de m'expliquer pourquoi la suppression de l'enregistrement de la table Parcour ne supprime pas automatiquement ceux de la table ParcourVideo ayant le même id (pour parcour_id).
En effet si je supprime les enregistrements de la table ParcourVideo avant l'enregistrement de la table Parcour, via la requête suivante :
Code:
1 2 3 4
| $qparvid = Doctrine_Query::create()
->delete('ParcourVideo e')
->where('parcour_id = ?', $parcour_id);
$qparvid->execute(); |
Cela se passe très bien.
Or j'aimerai vraiment que cela soit automatique sans être obligé de faire cette "pré-requête".
Un grand merci par avance.