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é?

29
demandé sur kuba 2011-03-28 12:41:32

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. Si IGNORE n'est pas spécifié, la copie est annulée et retournée si des erreurs clés en double se produisent. Si IGNORE 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 pour ALTER TABLEsupprimé et son utilisation produit un erreur.

42
répondu Galz 2015-02-06 09:45:03