让我们说有些表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列在儿童行。

阅读 这本书在线 要了解有关上删除级|落空条款。这一条款将使你能做你想要什么。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top