怎么删除永久记录在案的链接表?
-
25-09-2019 - |
题
让我们说有些表2QuesType和疑问句:-
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
在QuesType表:- QuesTypeID是一个主要关键
在疑问句表:- QuesID是一个主要关键和QuesType ID是外键refernces QuesTypeID从QuesType表
现在我无法删除记录从QuesType表,我只能让QuesType不活动由设置活动=False。我无法删除QuesTypes永久性的,因为外国的关键关系已有疑问句表。所以我设置的 列活动=false和那些Questypes然后不要告诉我格时,它的约束。
什么我想要做的就是可以删除任何QuesType permamnently.现在它只能被删除,如果其不被用于任何地方 在疑问句表,对吗?
所以删除任何QuesType永久我以为这是什么我能做的事:-
在格,显示QuesTypes,我有这样的检查框活动和一个按钮,对删除。我认为,当一个用户 使得一些QuesType活然后OnCheckChanged()事件将运行和将具有代码删除所有的问题 在疑问句表使用,QuesTypeID.然后在QuesType格,QuesType将作为禁用和只 然后用户可以删除永久的。
我在想是否正确?
目前在我DeleteQuesType存储程序的什么我所做的是:-
设置活动=false和 设置QuesTye=一些串像XXInactiveXX
是否有任何其他方式吗?
编辑 如果我想要实现这样才像第一次得到用户的关闭QuesType并仅仅如果它是活的,用户可以删除永久的。那是正确的逻辑?
解决方案
我认为你需要做的就是把
ON DELETE CASCADE
条款上你的外国主要制约因素。这将自动删除行自己的疑问句表时,其相应的QuesType行被删除。
其他提示
你可以只删除 QuesTypes
停用。
之前删除 QuesType
你必须要查询的数据库,并看看 QuesType.Active = false
.如果是的话,你可以删除所有行儿童表参考, QuesType.Id
(这被称为 梯级 删除)。你还可以设置一个空值在QuesTypeID列在儿童行。
阅读 这本书在线 要了解有关上删除级|落空条款。这一条款将使你能做你想要什么。