Établissement de contraintes de clés étrangères dans SQL Server
Le maintien de l'intégrité des données est crucial dans tout système de base de données. SQL Server offre la possibilité d'appliquer des relations entre les tables à l'aide de contraintes de clé étrangère. Cependant, la déclaration des clés étrangères diffère des autres systèmes de gestion de bases de données comme PostgreSQL.
Syntaxe et considérations
Voici comment créer une clé étrangère dans SQL Server :
ALTER TABLE <child_table> ADD CONSTRAINT <constraint_name> FOREIGN KEY (<child_column>) REFERENCES <parent_table>(<parent_column>)
Assurez-vous que le nombre de colonnes référencées dans la table enfant correspond au nombre de colonnes référencées dans la table parent. Sinon, vous rencontrerez une erreur similaire à :
Msg 8139, Level 16, State 0, Line 9 Number of referencing columns in foreign key differs from number of referenced columns, table 'question_bank'.
Dépannage : syntaxe incorrecte
Le code SQL fourni pour créer la table question_bank contient une erreur. La colonne question_exam_id de la table question_bank doit faire référence à la colonne exam_id de la table exams.
create table question_bank ( question_id uniqueidentifier primary key, question_exam_id uniqueidentifier not null, <!-- This should be a foreign key --> question_text varchar(1024) not null, question_point_value decimal, constraint question_exam_id foreign key references exams(exam_id) );
Syntaxe alternative : ajout de contraintes ultérieurement
Vous pouvez également créer une clé étrangère contraintes après avoir créé la table enfant à l'aide de l'instruction ALTER TABLE :
alter table question_bank add constraint question_exam_id_fk foreign key (question_exam_id) references exams(exam_id)
Cette méthode vous permet pour définir les contraintes séparément de la création de tables, offrant ainsi une plus grande flexibilité et un plus grand contrôle sur le schéma de la base de données.
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!