0

ストアドプロシージャを実行していますが、常に次のエラーがスローされます。

INSERTステートメントがFOREIGNKEY制約「OSFRK_OSUSR_ijq_BANK_ACCOUNT_OSUSR_IJQ_BANKA_CLIENT_CLIENT_ID」と競合していました。データベース「BANCDEV」、テーブル「dbo.OSUSR_IJQ_BANKA_CLIENT」、列「ID」で競合が発生しました。

テーブルが空で、行がありません。原因は何ですか?挿入の選択でTOP1を実行しても、エラーは引き続き発生します。

4

3 に答える 3

2

外部キーは、指定されたキーが「外部」テーブルの有効なレコードを指している必要があることを意味します。したがって、それが空の場合、それは失敗です。存在しないクライアントのレコードを作成できません。

于 2013-01-24T18:29:35.710 に答える
0

以下は、あなたが投稿した情報に基づいた推測です。質問に完全に答えるためには、INSERTステートメントが実際にどのように見えるか、テーブル間の関係(テーブル定義/スキーマを取得)など、さらにいくつかの情報を提供する必要があります。

このエラーは、挿入されるテーブルの列(投稿された限られた情報から、「BankAccount」のようなものだと思います)が別のテーブルへの外部キーとして定義されているために発生している可能性があります(ここでも、「BankClient」のようなものだと思います) ")他のテーブルの"ID"列。

事実上、BankClientとBankAccountの間の親子関係(「1対多」)を定義しています。したがって、特定のIDを持つBankClientは、多くのBankAccountを持つことができ、各アカウントは「ID」列を介してそのBankClientに関連付けられています。したがって、BankAccountテーブルには、「BankClientID」などの行に沿っていくつかの列があると思います。

つまり、「BankAccount」テーブルにレコードを挿入するには、その「BankClientID」フィールドに値があり、その値が「BankClient」レコードの「ID」列に存在している必要があります。お役に立てば幸いです。

于 2013-01-24T18:36:19.677 に答える
0

外部キー制約のあるテーブルに行を挿入しようとしています。たとえば、従業員と e_numbers という 2 つのテーブルがあるとします。e_numbersには数字しかありませんでしたが、従業員にはe_numbersからの番号と従業員の姓名があり、さらに従業員の外部キーはe_numbersテーブルからの番号です.対応する行がない従業員に行を挿入できませんでしたe_numbers. どの列が外部キーであるかを見て、それがどのテーブルについて話しているかを確認してください。この挿入ステートメントを実行する前に、そのテーブルに行があることを確認してください。

于 2013-01-24T18:33:53.010 に答える