Erstellen von Fremdschlüsseln in SQL Server
Bei der Datenbankverwaltung handelt es sich um die Erstellung von Verbindungen zwischen Tabellen, um die Datenintegrität aufrechtzuerhalten. Eine Möglichkeit, dies zu erreichen, ist die Verwendung von Fremdschlüsseln. SQL Server verwendet eine spezielle Syntax zum Deklarieren von Fremdschlüsseleinschränkungen und unterscheidet sich dadurch von anderen Datenbanksystemen wie PostgreSQL.
Syntaxprobleme und -lösung
Das bereitgestellte SQL-Skript zielt auf die Erstellung ab drei Tabellen: exams, questions_bank und anwser_bank, wobei die Tabelle questions_bank unter Verwendung einer Fremdschlüsseleinschränkung auf die Tabelle exams verweist. Bei der Ausführung tritt jedoch ein Fehler auf:
Msg 8139, Level 16, State 0, Line 9 Number of referencing columns in foreign key differs from number of referenced columns, table 'question_bank'.
Der Fehler wird erklärt
Dieser Fehler weist auf eine Nichtübereinstimmung zwischen der Anzahl der Spalten hin, auf die in der Fremdschlüsseldeklaration verwiesen wird, und die Anzahl der Spalten in der referenzierten Tabelle. Im bereitgestellten Skript verweist die Fremdschlüsseleinschränkung in der Tabelle questions_bank auf die Spalte exam_id in Prüfungen, aber die referenzierte Tabelle verfügt nicht über eine Spalte mit dem Namen exam_id.
Korrektur der Fremdschlüsseleinschränkung
Um das Problem zu beheben, muss die Fremdschlüsseldeklaration aktualisiert werden, um auf die richtige Spalte zu verweisen, nämlich exam_id in der Tabelle Prüfungen.
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) );
Alternative Syntax
Bei Bedarf kann die Fremdschlüsseleinschränkung mit der ALTER TABLE-Anweisung erstellt werden, die die Flexibilität bietet, die Einschränkung danach hinzuzufügen Die Tabelle wurde erstellt:
alter table question_bank add constraint FK_question_bank_exam_id FOREIGN KEY ( question_exam_id ) references exams(exam_id)
Dieser Ansatz ermöglicht eine detailliertere Kontrolle über die Benennung und das Timing von Einschränkungen Schöpfung.
Das obige ist der detaillierte Inhalt vonWie behebt man Fremdschlüsseleinschränkungsfehler in SQL Server beim Erstellen von Tabellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!