どのようにリンクされたテーブルの場合には恒久的にレコードを削除するには?
-
25-09-2019 - |
質問
私はこれらの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句。この句は、あなたがやりたいことができるようになります。