Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyelesaikan Ralat Kekangan Utama Asing dalam Pelayan SQL Apabila Mencipta Jadual?

Bagaimana untuk Menyelesaikan Ralat Kekangan Utama Asing dalam Pelayan SQL Apabila Mencipta Jadual?

Linda Hamilton
Lepaskan: 2024-12-30 13:07:10
asal
793 orang telah melayarinya

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

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'.
Salin selepas log masuk

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)
);
Salin selepas log masuk

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)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan