Mencipta Kunci Asing dalam Pelayan SQL
Pengurusan pangkalan data melibatkan penciptaan saling sambungan antara jadual untuk mengekalkan integriti data. Satu cara untuk mencapai ini adalah dengan menggunakan kunci asing. SQL Server menggunakan sintaks khusus untuk mengisytiharkan kekangan kunci asing, membezakannya daripada sistem pangkalan data lain seperti PostgreSQL.
Isu dan Penyelesaian Sintaks
Skrip SQL yang disediakan bertujuan untuk mencipta tiga jadual: peperiksaan, bank_soalan dan anwser_bank, dengan jadual bank_soalan merujuk kepada jadual peperiksaan menggunakan kekangan kunci asing. Walau bagaimanapun, selepas pelaksanaan, ralat berlaku:
Msg 8139, Level 16, State 0, Line 9 Number of referencing columns in foreign key differs from number of referenced columns, table 'question_bank'.
Ralat Dijelaskan
Ralat ini menunjukkan ketidakpadanan antara bilangan lajur yang dirujuk dalam perisytiharan kunci asing dan bilangan lajur dalam jadual yang dirujuk. Dalam skrip yang disediakan, kekangan kunci asing dalam question_bank jadual merujuk kepada lajur exam_id dalam peperiksaan, tetapi jadual yang dirujuk tidak mempunyai lajur bernama exam_id.
Membetulkan Kekangan Kunci Asing
Untuk menyelesaikan isu, pengisytiharan kunci asing mesti dikemas kini untuk merujuk lajur yang betul, iaitu exam_id dalam jadual peperiksaan.
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) );
Sintaks Alternatif
Jika dikehendaki, kekangan kunci asing boleh dibuat menggunakan pernyataan ALTER TABLE, yang menawarkan kefleksibelan untuk menambah kekangan selepas jadual telah dibuat:
alter table question_bank add constraint FK_question_bank_exam_id FOREIGN KEY ( question_exam_id ) references exams(exam_id)
Pendekatan ini membolehkan kawalan yang lebih terperinci ke atas penamaan kekangan dan pemasaan penciptaan.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat Kekangan Utama Asing dalam Pelayan SQL Apabila Mencipta Jadual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!