2010-06-12 4 views
2

Je donne les résultats suivants tables MySQL InnoDB ...MySQL InnoDB Cascade Règle qui regarde 2 colonnes?

TABLE foldersA (
ID 
title 
) 

TABLE foldersB (
ID 
title 
) 

TABLE records (
ID 
folderID 
folderType 
title 
) 

folderID dans le tableau "enregistrements" peuvent pointer à l'ID dans les deux "foldersA" ou "foldersB" en fonction de la valeur de foldertype. (0 ou 1).

Je me demande:

est-il un moyen de créer une règle de CASCADE de telle sorte que les lignes appropriées dans les enregistrements de table sont supprimés automatiquement lorsqu'une ligne dans les deux foldersA ou FolderB est supprimé?

Ou dans ce cas, suis-je obligé de supprimer les lignes de la table "records" par programme?

Merci pour votre aide!

+1

Non, mais vous pouvez créer des déclencheurs. – Artefacto

Répondre

0

En général,

Si vous avez un un type de quelque chose et un type B de quelque chose, vous devez créer une table pour « dossiers », puis un « foldersA » et « foldersB » pour conserver des données propres à chaque type. Ensuite, vous pouvez créer une contrainte de clé étrangère à partir de "enregistrements" comme vous le souhaitez qui pointe vers "dossiers". Si vous définissez une contrainte CASCADE DELETE sur "foldersA" et sur "foldersB" qui pointe vers "folders" (ID), la suppression de l'enregistrement parent effacera l'enregistrement supplémentaire dans la table enfant appropriée. Une autre alternative serait d'utiliser un TRIGGER à la fois sur "foldersA" et "foldersB" qui vérifie "records" pour les lignes enfants et les supprime.

Questions connexes