1

SQL Server 2000 データベースにテーブルとテーブルがありますcustomerorder

テーブルに存在しない を使用してorderテーブルに注文を入れたくないので、 に外部キー制約を設定しました。customerIDcustomercustomerID

これはすべて正常に機能しますが、制約に違反する可能性のあるストアド プロシージャを作成するときに、制約に違反するかどうかを確認し、違反する場合はクエリをスキップ/ロールバックする方法はありますか?

その瞬間、ストアド プロシージャがエラーを返し、それが私の ASP ページに表示され、かなり見苦しく見えますが、ほとんどのユーザーはそれを理解できません。

可能であれば、エラーを処理するよりエレガントな方法が欲しいです。

ありがとう

4

2 に答える 2

0

次の 2 つのオプションがあります。

  1. エラー処理を追加して醜いものをキャッチし、エラーを検査して FK 制約違反かどうかを確認し、これをユーザーに表示します。これは私見のより良い解決策です。

  2. 次のようなコードをストアド プロシージャに追加します。

if exists (select null from customer where customerid=@customerId )  
begin  
  --The customer existed so insert order  
end  
else  
begin  
  --Do something to tell you code to display error message  
end

2 番目のオプションでは、トランザクションの一貫性を監視する必要があります。たとえば、チェックが行われた後に顧客が削除された場合はどうなりますか。

于 2011-11-07T22:38:51.473 に答える