2011-01-08 13 views
1

「MainID」としてプライマリキーを持つテーブルTable1があり、このMainIDが多くのテーブルで外部キーとして使用されているとします。すべての外部キーが使用されている場所を確認

今、私がしようとすると、外部キーは、いくつかの子テーブルで使用されているとして、それは「外部キーの競合n個のもの」というこの例外をスローMainIDだ表1からレコードを削除すると...

今私がしたいです最初に、その外部キー列 "MainID"を持つすべての子をチェックし、Table1のMainIDが子テーブルのいずれかで使用されている場合は0を返すような方法でDelete Stroredプロシージャを設計します。この0の値に基づいて、私は、 "使用中または何か"と表示されるように警告ボックスを表示し、そのテーブルからmainIDを使用していた子テーブルのすべてのレコードが削除されていない限り、ユーザーにそのレコードを削除させません。

私はON DELETE CASCADEを使用できません。私は、ユーザーが手動で子テーブルレコードを1つずつ削除するようにします。テーブル1からレコードを削除できるMainIDを使用する子テーブルレコードが削除された後にのみ

答えて

2

TRY/CATCH(c#またはSQL Server)を使用して正しいSQLエラー番号をトラップすることを検討します。

システムテーブルをドリルしてリンクを見つけるのは簡単ですが、子テーブルごとにいくつかの動的クエリがあります。

+0

+1これをASP.NET C#でキャッチするのは間違いなく最高です。 Exception.Numberを使用して外部キー違反かどうかを確認する – Andomar

関連する問題