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
Patricia Arquetteoriginal
2024-11-04 05:13:29713parcourir

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`);

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

ID (AUTO_INCREMENT PRIMARY KEY)
type
owner
description

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 |

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 |

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;

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!

Déclaration:
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