0

外部キー制約を使用するデータベースで動作するアプリケーションがあります。

たとえば、case_names というテーブルを参照する外部キー制約を持つ在庫テーブルがあります。ID を参照するインベントリ アイテムを含むケース名をユーザーが削除しようとすると、アクションが制限されます。

ユーザーが理解できるメッセージを表示するにはどうすればよいですか? 「このケースにはまだインベントリ アイテムが含まれているため、削除できません。」

私の考えはtry-catch(さまざまなエラータイプをキャッチしますか?)ですが、これを予想されるものに使用したくありません。

アプリケーションはMySQL.dataを使用してVB.Netにあります

4

1 に答える 1

2

ユーザーエラーや通常のプログラムフローを処理するために例外を使用することはありません。ユーザーが(おそらくストアドプロシージャを使用して)レコードを削除できるかどうかを確認し、できない場合はアラートメッセージを表示します。

例外は、予測できないエラーの場合だと思います。

明確にするために編集:

ストアドプロシージャ(またはプログラム内のコード)は、関連するすべてのテーブルをチェックしたり、削除要求の影響を受けるレコードの数をチェックしたりすることができます。カウントすることで、ケースに関連付けられている在庫アイテムの数COUNT()をユーザーに通知できるという追加の利点があります。例では、次のようになります。

「まだ32個の在庫アイテムが含まれているため、このケースを削除することはできません。」

詳細を明確にするために編集します。

もちろん、これは、参照整合性がDBで適切に設定されるべきではないということではありません。いくつかのチェックを忘れた場合でも、あなたはあなたのために働くDBを持っています(そしてユーザーはプログラムが何を言っているのかを知るためにあなたに電話します:))。

于 2012-03-01T16:54:58.797 に答える