どのようにリンクされたテーブルの場合には恒久的にレコードを削除するには?

StackOverflow https://stackoverflow.com/questions/4608529

質問

私はこれらの2つのテーブルQuesTypeと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
QuesType表には、

: - QuesTypeIDが主キーである

QUES表には、

: - QuesIDは主キーであるとQuesType IDはreferncesが

QuesType表からQuesTypeIDことを外部キーであります

今、私がQuesType表からレコードを削除することができません、私は偽のActive =を設定することにより、QuesTypeを非アクティブにすることができます。 私はそれのためにQUES表を持っている外部キー関係の恒久的QuesTypesを削除することができません。だから、私はちょうど設定します その結合したときのActive = falseを、それらのQuestypes列はその後、私のグリッドに表示されません。

私は何をしたいpermamnently任意のQuesTypeを削除することができます。そのどこでも使用されていない場合は今ではのみ削除することができます QUESテーブルで、右?

だから、任意QuesTypeを削除するには、恒久的に私は、これは私が何ができるかであると思った: -

グリッドでたときにユーザーが表示されQuesTypesは、私がアクティブの場合は、このチェックボックスとdelete.What Iのためのボタンがあり、思ったこと いくつかのQuesTypeの非アクティブが、その後OnCheckChangedなります()イベントが実行され、それがすべての質問を削除するためのコードを持っています QUESテーブルにそのQuesTypeIDを使用しています。そして、QuesTypeグリッド上、QuesTypeが非アクティブとして表示され、唯一のだろうと その後、ユーザーは永久に削除することができます。

アムI正しく考えて?

現在、私のDeleteQuesTypeに私がやっている何のストアドプロシージャは、次のとおりです。 -

アクティブ= falseを設定し、 設定QuesTye = XXInactiveXXのようないくつかの文字列

他の方法がある。

を編集 私は最初のユーザーがQuesTypeを無効にするために取得し、それをユーザーが永久に削除することができ無効だ場合にのみ、のような、唯一のそのように実装する場合。正しいロジックはありますか?

役に立ちましたか?

解決

私はあなたが

を入れて何をする必要があるかと思います
ON DELETE CASCADE
あなたの外部キー制約に

句。これはあなたのQUESテーブルから自動的に削除行がそれに対応するQuesType行が削除されますときます。

他のヒント

あなたはQuesTypesが無効にのみ削除することができます。

QuesTypeを削除する前に、データベースを照会し、QuesType.Active = falseかどうかを確認する必要があります。はい、あなたは子テーブルからすべての行を削除することができた場合、その参照そのQuesType.Id(これはとして知られているのカスケードの削除)。また、子行のQuesTypeID列にヌル値を設定することができます。

読む<のhref = "http://books.google.com/books?id=ekEt972gEDIC&pg=PA238&lpg=PA238&dq=cascade+set+null+on+child+row+sql+server&source=bl&ots=zn410KXT5z&sig=5FNs8LbZWZU4Uh4 -mJGbFRZ8x8k&HL = EN&EI = 7tEkTdGVLsT7lwew6sjZAQ&SA = X&OI = book_result&CT =結果&resnum = 3&VED = 0CCIQ6AEwAg#V = 1ページ分&Q =カスケード%20set%20null%20on%20child%20row%20sql%20server&F =偽」のrel = "nofollowを">この書籍のオンライン ON DELETE CASCADEを学びます| SET NULL句。この句は、あなたがやりたいことができるようになります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top