Maison > base de données > tutoriel mysql > Comment résoudre les erreurs de contrainte de clé étrangère dans SQL Server lors de la création de tables ?

Comment résoudre les erreurs de contrainte de clé étrangère dans SQL Server lors de la création de tables ?

Linda Hamilton
Libérer: 2024-12-30 13:07:10
original
793 Les gens l'ont consulté

How to Resolve Foreign Key Constraint Errors in SQL Server When Creating Tables?

Création de clés étrangères dans SQL Server

La gestion de bases de données implique la création d'interconnexions entre les tables pour maintenir l'intégrité des données. Une façon d’y parvenir consiste à utiliser des clés étrangères. SQL Server utilise une syntaxe spécifique pour déclarer les contraintes de clé étrangère, ce qui le distingue des autres systèmes de bases de données comme PostgreSQL.

Problèmes de syntaxe et résolution

Le script SQL fourni vise à créer trois tables : exams, question_bank et anwser_bank, la table question_bank faisant référence à la table exams à l'aide d'une contrainte de clé étrangère. Cependant, lors de l'exécution, une erreur se produit :

Msg 8139, Level 16, State 0, Line 9
Number of referencing columns in
foreign key differs from number of
referenced columns, table
'question_bank'.
Copier après la connexion

L'erreur expliquée

Cette erreur indique une inadéquation entre le nombre de colonnes référencées dans la déclaration de clé étrangère et le nombre de colonnes dans la table référencée. Dans le script fourni, la contrainte de clé étrangère dans la table question_bank fait référence à la colonne exam_id dans exams, mais la table référencée n'a pas de colonne nommée exam_id.

Correction de la contrainte de clé étrangère

Pour résoudre le problème, la déclaration de clé étrangère doit être mise à jour pour référencer la colonne correcte, qui est exam_id dans le tableau examens.

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)
);
Copier après la connexion

Syntaxe alternative

Si vous le souhaitez, la contrainte de clé étrangère peut être créée à l'aide de l'instruction ALTER TABLE, qui offre la flexibilité d'ajouter la contrainte après la table a été créée :

alter table question_bank
add constraint FK_question_bank_exam_id FOREIGN KEY ( question_exam_id ) references exams(exam_id)
Copier après la connexion

Cette approche permet un contrôle plus granulaire sur la dénomination des contraintes et le timing de création.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal