Rumah >pangkalan data >tutorial mysql >Apakah yang berlaku kepada rekod pendua apabila menggunakan `ALTER IGNORE TABLE` dengan kekangan unik dalam MySQL?

Apakah yang berlaku kepada rekod pendua apabila menggunakan `ALTER IGNORE TABLE` dengan kekangan unik dalam MySQL?

Patricia Arquette
Patricia Arquetteasal
2024-11-04 05:13:29713semak imbas

What happens to duplicate records when using `ALTER IGNORE TABLE` with a unique constraint in MySQL?

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!

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