MySQL: ALTER IGNORE TABLE dengan Kekangan Unik
Dalam MySQL, anda mungkin menghadapi senario di mana anda perlu menambah kekangan unik pada jadual sedia ada. Pernyataan ALTER TABLE menawarkan pilihan IGNORE yang berpotensi menjejaskan pengekalan rekod pendua.
Pertimbangkan contoh berikut:
ALTER IGNORE TABLE `my_table` ADD UNIQUE (`type`, `owner`);
Anggapkan bahawa kami mempunyai jadual my_table dengan skema berikut:
ID (AUTO_INCREMENT PRIMARY KEY) type owner description
Katakan kita mempunyai berbilang rekod dengan jenis dan nilai pemilik yang sama, seperti:
| ID | type | owner | |---|---|---| | 1 | Apple | Apple CO | | 2 | Apple | Apple CO |
Timbul persoalan: rekod manakah yang akan kekal selepas menambah kekangan unik menggunakan ALTER JADUAL ABAIKAN?
Dalam versi MySQL sebelum 5.7.4, klausa IGNORE akan mengekalkan rekod pertama yang memenuhi kekangan unik, sambil memadamkan selebihnya.
| ID | type | owner | |---|---|---| | 1 | Apple | Apple CO |
Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa klausa IGNORE telah dialih keluar daripada MySQL 5.7.4 dan seterusnya dan penggunaannya kini mengakibatkan ralat.
Oleh itu, dalam versi MySQL yang lebih baharu, anda harus mengelak daripada menggunakan ALTER IGNORE TABLE dengan kekangan unik. Sebaliknya, pertimbangkan untuk menggunakan alternatif berikut:
ALTER TABLE `my_table` ADD UNIQUE (`type`, `owner`) USING BTREE;
Dalam kes ini, jika terdapat rekod pendua yang melanggar kekangan unik, ralat akan dilemparkan dan operasi akan gagal. Pendekatan ini memastikan integriti data dan menghalang sebarang pemotongan atau pemadaman rekod yang tidak dijangka.
Atas ialah kandungan terperinci Apakah yang berlaku kepada rekod pendua apabila menggunakan `ALTER IGNORE TABLE` dengan kekangan unik dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!