SQL Server での外部キーの作成
データベース管理では、データの整合性を維持するためにテーブル間の相互接続を作成します。これを実現する 1 つの方法は、外部キーを使用することです。 SQL Server は、PostgreSQL などの他のデータベース システムとは区別して、外部キー制約を宣言するための特定の構文を採用しています。
構文の問題と解決策
提供された SQL スクリプトの目的は、 3 つのテーブル: Exam、question_bank、および anwser_bank。question_bank テーブルは外部キー制約を使用して Exam テーブルを参照します。ただし、実行時にエラーが発生します。
Msg 8139, Level 16, State 0, Line 9 Number of referencing columns in foreign key differs from number of referenced columns, table 'question_bank'.
エラーの説明
このエラーは、外部キー宣言で参照される列の数と外部キー宣言で参照される列の数が一致しないことを示します。参照されるテーブルの列の数。提供されたスクリプトでは、テーブル question_bank の外部キー制約が Exam_id 列を参照しますが、参照されるテーブルには Exam_id という名前の列がありません。
外部キー制約の修正
この問題を解決するには、外部キー宣言を更新して、テーブル内のexam_idである正しい列を参照する必要があります。
create table question_bank ( question_id uniqueidentifier primary key, question_exam_id uniqueidentifier not null, -- References "exam_id" in table "exams" question_text varchar(1024) not null, question_point_value decimal, constraint FK_question_bank_exam_id foreign key references exams(exam_id) );
代替構文
必要に応じて、ALTER TABLE ステートメントを使用して外部キー制約を作成できます。これにより、後で制約を追加できる柔軟性が得られます。テーブルが作成されました:
alter table question_bank add constraint FK_question_bank_exam_id FOREIGN KEY ( question_exam_id ) references exams(exam_id)
このアプローチにより、制約の名前付けとタイミングをより詳細に制御できます。作成。
以上がテーブル作成時の SQL Server での外部キー制約エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。