Supprimer un enfant et une ligne parente avec un script SQL
Au lieu de supprimer la ligne enfant et puis l'écriture d'une autre instruction sql pour supprimer la ligne parent je voulais utiliser une déclaration qui va faire les deux. Pour info: nous utilisons la base de données Oracle.
Mise à jour: je n'ai pas un privilège de faire SUPPRIMER en CASCADE
source d'informationauteur WowBow
Vous devez vous connecter pour publier un commentaire.
Définir vos clés étrangères avec les suppressions en cascade. Alors vous n'avez qu'à supprimer le "parent" de ligne.
AVERTISSEMENT! Ne supprimez où à la fois le parent ET l'enfant lignes existent. Ne supprimera PAS les parents sans enfants
Si vous voulez toujours de supprimer les enfants lorsque vous supprimez une ligne parent, vous pouvez déclarer la contrainte de clé étrangère, de sorte que l'Oracle n'est l'enfant de supprimer automatiquement
par exemple, pour déclarer une table parent et un enfant de table et de supprimer automatiquement les lignes enfants lorsque vous supprimez la ligne parent. Si vous ne voulez pas ce genre de chose pour être appliquée automatiquement ou vous n'aimez pas la complexité qui est ajouté quand les choses se "automagiquement" dans le fond, vous êtes probablement coincé avec l'aide de plusieurs
DELETE
consolidés.Vous ne pouvez le faire mal - à-d., à l'aide de déclencheurs.
L'autre (façon ennuyeuse, nous avons cela dans une base de données qui, pour une raison inconnue, ne pas utiliser de clés étrangères comme des contraintes - oui oui) pour ce faire serait de créer un déclencheur après (ou avant) supprimer.
Vous aurez à écrire une autre requête de suppression, mais seulement dans le déclencheur.
Mais si vous ne pouvez pas mettre delete cascade, je ne suis pas sûr que vous pouvez ajouter des déclencheurs...