Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Melaksanakan Kunci Komposit Peningkatan Auto dalam MySQL?
Kunci Komposit Penambahan Auto dalam MySQL: Panduan Komprehensif
Apabila bekerja dengan pangkalan data hubungan, adalah perkara biasa untuk menghadapi senario di mana jadual memerlukan kunci komposit yang terdiri daripada berbilang lajur. Dalam MySQL, pelaksanaan kunci komposit kadangkala memerlukan penggunaan nilai penambahan automatik untuk mengenal pasti rekod secara unik.
Pertimbangkan senario di mana anda mempunyai jadual 'issue_log' yang merujuk dua kunci asing ('app_id' dan 'id_ujian'). Untuk setiap gabungan unik kunci asing ini, anda memerlukan lajur peningkatan automatik ('sr_no') untuk memberikan pengenalan lanjut. Persediaan ini memerlukan kunci komposit pada tiga lajur ('app_id', 'test_id' dan 'sr_no').
Untuk melaksanakan kunci komposit ini, anda mungkin mula-mula cuba menggunakan pernyataan SQL yang serupa dengan:);`
Walau bagaimanapun, apabila melaksanakan pertanyaan ini, anda akan menghadapi mesej ralat yang menyatakan "Takrif jadual tidak betul; hanya boleh ada satu lajur automatik dan ia mesti ditakrifkan sebagai kunci." Ralat ini berpunca daripada fakta bahawa MySQL hanya membenarkan satu lajur peningkatan automatik bagi setiap jadual.
Cabaran timbul disebabkan oleh pengehadan enjin storan InnoDB. Jadual InnoDB memerlukan semua kunci utama diindeks, yang bermaksud bahawa memasukkan lajur peningkatan automatik dalam kunci utama komposit boleh membawa kepada kemerosotan prestasi.
Untuk mengatasi isu ini dan mencapai hasil yang diingini, anda boleh sama ada:
Pendekatan ini melibatkan penciptaan pencetus atau prosedur yang menambah lajur 'sr_no' berdasarkan gabungan unik 'app_id' dan 'test_id'. Contoh pencetus yang disediakan dalam penyelesaian memastikan lajur 'sr_no' ditambah secara automatik sebelum setiap baris baharu dimasukkan ke dalam jadual 'issue_log'.
Gunakan Enjin Pangkalan Data Berbeza:Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Kunci Komposit Peningkatan Auto dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!