Bagaimanakah saya boleh menambah kenaikan automatik pada jadual sedia ada dalam MySQL tanpa kehilangan data atau melanggar kekangan kunci asing?

Mary-Kate Olsen
Lepaskan: 2024-10-26 15:20:30
asal
888 orang telah melayarinya

How can I add auto-increment to existing tables in MySQL without losing data or breaking foreign key constraints?

Menambah Autoincrement pada Jadual Sedia Ada dalam MySQL

Jika anda mewarisi pangkalan data yang tidak mempunyai auto-incrementer, anda masih boleh mendayakan ciri ini. Begini cara untuk menukar lajur kunci utama kepada medan peningkatan automatik:

ALTER TABLE table_name MODIFY COLUMN id INT NOT NULL AUTO_INCREMENT;
Salin selepas log masuk

Lajur id kini akan menjana nilai unik secara automatik untuk baris baharu yang dimasukkan ke dalam jadual.

Walau bagaimanapun, apabila mengubah suai lajur dengan kebergantungan kunci asing (cth., apabila jadual lain merujuk id), anda mungkin menghadapi ralat 150. Untuk menyelesaikan masalah ini:

  • Semak konflik dengan kekangan kunci asing dalam jadual bergantung.
  • Putuskan kitaran kebergantungan dengan mengalih keluar kekangan kunci asing buat sementara waktu dan menciptanya semula selepas kenaikan automatik didayakan.

Setelah ciri kenaikan automatik disediakan, masukkan baharu baris tanpa menyatakan nilai untuk lajur id akan mengisinya dengan nilai unik dan berturut-turut:

INSERT INTO table_name () VALUES ();
Salin selepas log masuk

Dengan mengubah suai takrifan lajur, anda mengelakkan keperluan untuk mencipta lajur baharu dan menggugurkan lajur asal, mengekalkan kekangan kunci utama jadual dan mengekalkan integriti rujukan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menambah kenaikan automatik pada jadual sedia ada dalam MySQL tanpa kehilangan data atau melanggar kekangan kunci asing?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!