ホームページ >データベース >mysql チュートリアル >SQL Server の外部キー制約が「参照列の数」エラーで失敗するのはなぜですか?

SQL Server の外部キー制約が「参照列の数」エラーで失敗するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-04 19:32:40932ブラウズ

Why Does My SQL Server Foreign Key Constraint Fail with a

SQL Server での外部キー作成の問題の解決

SQL Server では、外部キーの宣言が PostgreSQL の宣言とは異なります。クエリによってエラー「外部キーの参照列の数が、テーブル 'question_bank' の参照列の数と異なります。」

エラーの原因: が発生したシナリオを調べてみましょう。

提供された SQL コードは次のテーブルを作成しようとしました:

CREATE TABLE question_bank (
    question_id UNIQUEIDENTIFIER PRIMARY KEY,
    question_exam_id UNIQUEIDENTIFIER NOT NULL,
    question_text VARCHAR(1024) NOT NULL,
    question_point_value DECIMAL,
    CONSTRAINT question_exam_id FOREIGN KEY REFERENCES exams(exam_id)
);

エラーが発生しました。 「question_bank」テーブルの外部キー制約「question_exam_id」は、「exams」テーブルの「exam_id」列を参照します。ただし、「question_bank」テーブルには参照列 (「question_exam_id」) が 1 つだけ存在しますが、「exams」テーブルには複数の列があります。

解決策:

この問題を解決するには、参照する列の数が参照される列の数と一致することを確認する必要があります。この場合、「exams」テーブルの「exam_name」列を「question_bank」テーブルに追加するだけです:

ALTER TABLE question_bank ADD COLUMN exam_name VARCHAR(50);

これで、外部キー制約を正常に作成できます:

ALTER TABLE question_bank
ADD CONSTRAINT question_exam_id FOREIGN KEY (question_exam_id, exam_name) REFERENCES exams(exam_id, exam_name);

代替構文:

または、次のように作成できます。テーブル作成プロセス中の制約:

CREATE TABLE question_bank (
    question_id UNIQUEIDENTIFIER PRIMARY KEY,
    question_exam_id UNIQUEIDENTIFIER NOT NULL,
    exam_name VARCHAR(50),
    question_text VARCHAR(1024) NOT NULL,
    question_point_value DECIMAL,
    CONSTRAINT question_exam_id FOREIGN KEY (question_exam_id, exam_name) REFERENCES exams(exam_id, exam_name)
);

この場合、「exam_name」列が「question_bank」テーブルに追加され、テーブルの作成中に外部キー制約が同時に作成されます。

以上がSQL Server の外部キー制約が「参照列の数」エラーで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。