Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencipta Kunci Asing Merujuk Kunci Utama Berbilang Lajur dalam MySQL?

Bagaimana untuk Mencipta Kunci Asing Merujuk Kunci Utama Berbilang Lajur dalam MySQL?

Linda Hamilton
Linda Hamiltonasal
2024-12-01 18:24:10780semak imbas

How to Create a Foreign Key Referencing a Multi-Column Primary Key in MySQL?

Merujuk Kunci Utama Berbilang Lajur dalam MySQL

Dalam senario pangkalan data hubungan di mana jadual mempunyai kunci utama komposit yang ditakrifkan oleh berbilang lajur (cth., product_id, attribute_id), soalan biasa timbul: bagaimanakah jadual lain boleh mewujudkan hubungan utama asing dengan ini kunci utama berbilang lajur?

Penyelesaian:

Sintaks Kunci Asing Komposit:

Penyelesaian melibatkan penentuan asing komposit masukkan dalam jadual rujukan. Sintaks untuk kunci asing tersebut adalah seperti berikut:

CREATE TABLE MyReferencingTable (
    [COLUMN DEFINITIONS]
    refcol1 INT NOT NULL,
    refcol2 INT NOT NULL,
    CONSTRAINT fk_mrt_ot FOREIGN KEY (refcol1, refcol2)
                        REFERENCES OtherTable(col1, col2)
) ENGINE=InnoDB;
  • refcol1 dan refcol2: Lajur dalam jadual rujukan yang membentuk kunci komposit kunci asing.
  • col1 dan col2: Lajur dalam jadual rujukan yang membentuk yang utama kunci.
  • fk_mrt_ot: Nama kekangan untuk kunci asing ini (pilihan tetapi disyorkan).

Pertimbangan Utama:

  • Pengindeksan: MySQL memerlukan lajur kunci asing untuk diindeks, memastikan operasi gabungan yang cekap.
  • Sintaks KEKANGAN: Menggunakan sintaks kekangan menyediakan rujukan bernama kepada kunci asing, menjadikan pengubahsuaian atau pengalihan keluar berikutnya lebih mudah.
  • Enjin: InnoDB ialah enjin transaksi yang menguatkuasakan kunci asing kekangan, tetapi MyISAM (enjin bukan transaksi) mengabaikan spesifikasi utama asing.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Kunci Asing Merujuk Kunci Utama Berbilang Lajur dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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