Apabila bekerja dengan pangkalan data, mengubah struktur jadual adalah penting untuk mengoptimumkan prestasi dan integriti data. Satu tugas biasa ialah mengalih keluar kunci utama. Walau bagaimanapun, proses ini boleh dihadapi dengan ralat, terutamanya apabila berurusan dengan kunci utama kompaun dan lajur kenaikan automatik.
Pertimbangkan perkara berikut:
mysql> describe user_customer_permission; +------------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+---------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | user_customer_id | int(11) | NO | PRI | NULL | | | permission_id | int(11) | NO | PRI | NULL | | +------------------+---------+------+-----+---------+----------------+ 3 rows in set (0.00 sec)
Di sini, jadual mempunyai primer komposit kunci termasuk id lajur, user_customer_id dan permission_id. Percubaan untuk mengalih keluar kunci utama daripada user_customer_id dan permission_id tanpa mengubah lajur id mengakibatkan ralat:
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
Untuk menangani isu ini, lajur id mesti diubah suai untuk mengalih keluar sifat kenaikan automatiknya sebelum menjatuhkan kunci utama:
ALTER TABLE user_customer_permission MODIFY id INT NOT NULL; ALTER TABLE user_customer_permission DROP PRIMARY KEY;
Adalah penting untuk ambil perhatian bahawa kunci utama komposit kini bergantung pada ketiga-tiga lajur untuk keunikan. Jika id tidak dijamin unik, ia boleh dipulihkan sebagai kunci utama dengan kenaikan automatik:
ALTER TABLE user_customer_permission MODIFY id INT NOT NULL PRIMARY KEY AUTO_INCREMENT;
Dengan memahami kebergantungan antara kunci utama dan lajur autokenaikan, anda boleh mengalih keluar kunci primer dengan berkesan sambil mengekalkan integriti struktur pangkalan data anda.
Atas ialah kandungan terperinci Bagaimana untuk Mengalih keluar Kunci Utama dengan Selamat daripada Jadual MySQL dengan Lajur Auto-Tambahan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!