Maison > base de données > tutoriel mysql > Qu'arrive-t-il aux enregistrements en double lors de l'utilisation de « ALTER IGNORE TABLE » avec une contrainte unique dans MySQL ?

Qu'arrive-t-il aux enregistrements en double lors de l'utilisation de « ALTER IGNORE TABLE » avec une contrainte unique dans MySQL ?

Patricia Arquette
Libérer: 2024-11-04 05:13:29
original
713 Les gens l'ont consulté

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

MySQL : ALTER IGNORE TABLE avec une contrainte unique

Dans MySQL, vous pouvez rencontrer un scénario dans lequel vous devez ajouter une contrainte unique sur un tableau existant. L'instruction ALTER TABLE propose l'option IGNORE qui peut potentiellement affecter la conservation des enregistrements en double.

Considérez l'exemple suivant :

ALTER IGNORE TABLE `my_table` ADD UNIQUE (`type`, `owner`);
Copier après la connexion

Supposons que nous ayons une table my_table avec le schéma suivant :

ID (AUTO_INCREMENT PRIMARY KEY)
type
owner
description
Copier après la connexion

Disons que nous avons plusieurs enregistrements avec le même type et les mêmes valeurs de propriétaire, tels que :

| ID | type | owner |
|---|---|---|
| 1 | Apple | Apple CO |
| 2 | Apple | Apple CO |
Copier après la connexion

La question se pose : quel enregistrement restera après l'ajout de la contrainte unique à l'aide de ALTER IGNORE TABLE ?

Dans les versions MySQL antérieures à 5.7.4, la clause IGNORE conserverait le premier enregistrement qui satisfait à la contrainte unique, tout en supprimant le reste.

| ID | type | owner |
|---|---|---|
| 1 | Apple | Apple CO |
Copier après la connexion

Cependant, il est important de noter que la clause IGNORE a depuis été supprimée à partir de MySQL 5.7.4 et que son utilisation entraîne désormais une erreur.

Par conséquent, dans les versions plus récentes de MySQL, vous devez éviter d'utiliser ALTER IGNORE TABLE avec des contraintes uniques. Envisagez plutôt d'utiliser l'alternative suivante :

ALTER TABLE `my_table` ADD UNIQUE (`type`, `owner`) USING BTREE;
Copier après la connexion

Dans ce cas, s'il existe des enregistrements en double qui violent la contrainte d'unicité, une erreur sera générée et l'opération échouera. Cette approche garantit l'intégrité des données et empêche toute troncature ou suppression inattendue d'enregistrements.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal