MySQL: ALTER IGNORE TABLE ajouter UNIQUE, qu'est-ce qui sera tronqué?
j'ai une table avec 4 colonnes: ID, type, propriétaire, description. ID est la clé primaire AUTO_ incrément et maintenant je veux:
ALTER IGNORE TABLE `my_table`
ADD UNIQUE (`type`, `owner`);
bien sûr, j'ai quelques enregistrements avec type = 'Pomme' et propriétaire = 'Apple CO'. Donc, ma question Est de savoir quel disque sera le plus spécial pour rester après cette table D'ALTER, celui avec le plus petit ID ou peut-être celui avec le plus grand comme le dernier inséré?
1 réponses
Le premier enregistrement sera conservé, le reste effacé §§:
IGNORE
est une extension MySQL à le standard SQL. Il contrôle comment modifier La TABLE fonctionne s'il y a des doublons sur les clés uniques dans la nouvelle table ou si les Avertissements se produisent lorsque le mode strict est permettre. SiIGNORE
n'est pas spécifié, la copie est annulée et retournée si des erreurs clés en double se produisent. SiIGNORE
est spécifié, seuls les premier ligne est utilisé de lignes avec les doublons sur un clé unique, les autres lignes en conflit supprimé. Les valeurs incorrectes sont tronquée correspondant le plus proche valeur acceptable
je suppose que "premier" signifie ici celui avec le plus petit ID, en supposant que L'ID est la clé primaire.
remarque:
à partir de MySQL 5.7.4, le
IGNORE
clause pourALTER TABLE
supprimé et son utilisation produit un erreur.