1

customerテーブルとorderテーブルがSQL Server 2000データベースにあります。ストアドプロシージャの参照整合性を確認する

私はcustomerIDに外部キー制約を入れているようcustomerテーブルに存在しないcustomerIDorderテーブルになるためにしたくありません。

これはすべて正常に動作しますが、制約に違反する可能性のあるストアドプロシージャを記述する際に、制約が違反するかどうかを確認する方法がありますか?

私のASPページに表示されるエラーは、ストアドプロシージャによって返され、むしろ醜い+ほとんどのユーザーは理解できません。

可能であれば、エラーをより洗練された方法で処理したいと思います。

おかげ

答えて

0

あなたは2つのオプションがあります。

  1. は、それがFK制約違反だかどうかを確認し、これをユーザに表示するためにそれを点検醜い、エラーをキャッチするためにエラー処理を追加します。これはIMHOの方が優れています。あなたのトランザクションの整合性を見たいと思うだろう第二の選択肢で

if exists (select null from customer where [email protected]) 
begin 
    --The customer existed so insert order 
end 
else 
begin 
    --Do something to tell you code to display error message 
end 

  • は、次のようなストアドプロシージャのコードを追加します。たとえば、チェックが行われた後に顧客が削除された場合はどうなりますか?

  • 0

    あなたが操作を試みる前に、データを検査することができ、またはあなたが操作を試みた後、それぞれの文の後にエラーをチェックすることができ、その後、ROLLBACKなど

    をしかし、あなたは完全にストアドプロシージャの中でそれを処理しに適切に戻ることができますあなたのデザインに応じて発信者。

    は、この記事を見ている:SQL Server 2005ではhttp://www.sommarskog.se/error-handling-II.html

    を、TRY/CATCH

    を使用した可能性があります
    関連する問題