Question

Disons que j'ai ces 2 tables QuesType et Ques: -

QuesType

QuestypeID|QuesType      |Active
------------------------------------
101       |QuesType1     |True
102       |QuesType2     |True
103       |XXInActiveXX  |False



Ques

QuesID|Ques|Answer|QUesTypeID|Active
------------------------------------
1     |Ques1|Ans1 |101     |True
2     |Ques2|Ans2 |102     |True
3     |Ques3|Ans3 |101     |True

Dans le QuesType Tableau: - QuesTypeID est une clé primaire

Dans le Ques Tableau: - QuesID est une clé primaire et QuesType ID est la clé étrangère refernces QuesTypeID de QuesType Tableau

Maintenant, je ne peux pas supprimer des enregistrements de QuesType table, je ne peux que faire QuesType inactif en réglant Active = False. Je ne peux pas supprimer définitivement QuesTypes en raison de la relation clé étrangère a avec Ques Tableau. Donc, je viens de mettre la colonne active = false et les Questypes alors ne montrent pas sur ma grille lorsque sa borne.

Ce que je veux faire est d'être en mesure de supprimer tout QuesType permamnently. Maintenant, il ne peut être supprimé si son pas utilisé partout dans le tableau Ques, droit?

Donc, pour supprimer toute QuesType permanente Je pensais que ce que je pouvais faire: -

Dans la grille qui affiche QuesTypes, j'ai cette case à cocher pour Active et un bouton pour delete.What je pensais, quand un utilisateur fait un événement inactif alors OnCheckChanged () QuesType fonctionnera et qui aura le code pour supprimer toutes les questions dans le tableau Ques qui utilisent ce QuesTypeID. Ensuite, sur la grille de QuesType, que QuesType montrerait que Désactivé et seulement puis un utilisateur peut supprimer définitivement.

Suis-je pense correctement?

À l'heure actuelle dans mon DeleteQuesType procédure stockée ce que je fais est: -

Réglage Active = false et Réglage QuesTye = une chaîne comme XXInactiveXX

Y at-il une autre façon?

modifier Et si je veux mettre en œuvre cette façon que, comme d'abord obtenir l'utilisateur de désactiver le QuesType et seulement s'il est désactivé que l'utilisateur peut supprimer définitivement. Est-ce que la logique correcte?

Était-ce utile?

La solution

Je pense que ce que vous devez faire est de mettre la balise

ON DELETE CASCADE

clause sur votre clé étrangère. Cela effacera automatiquement les lignes de votre table de Ques lorsque sa ligne de QuesType correspondante est supprimée.

Autres conseils

Vous pouvez supprimer uniquement le QuesTypes désactivé.

Avant de supprimer un QuesType vous devrez interroger la base de données et voir si QuesType.Active = false. Si oui, vous pouvez supprimer toutes les lignes de la table des enfants qui font référence que QuesType.Id (ce qui est connu comme une cascade supprimer). Vous pouvez également définir une valeur nulle sur la colonne QuesTypeID dans les rangs de l'enfant.

Lire ce livre en ligne pour en savoir plus sur l'ON DELETE CASCADE | SET clause NULL. Cette clause vous permettra de faire ce que vous voulez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top