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

Patricia Arquette
Lepaskan: 2024-11-04 05:13:29
asal
707 orang telah melayarinya

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`);
Salin selepas log masuk

Anggapkan bahawa kami mempunyai jadual my_table dengan skema berikut:

ID (AUTO_INCREMENT PRIMARY KEY)
type
owner
description
Salin selepas log masuk

Katakan kita mempunyai berbilang rekod dengan jenis dan nilai pemilik yang sama, seperti:

| ID | type | owner |
|---|---|---|
| 1 | Apple | Apple CO |
| 2 | Apple | Apple CO |
Salin selepas log masuk

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 |
Salin selepas log masuk

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;
Salin selepas log masuk

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!

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