MySQL: ALTER IGNORE TABLE ADD UNIQUE, ¿qué se truncará?
Tengo una tabla con 4 columnas: ID, type, owner, description. ID es la CLAVE PRIMARIA AUTO_INCREMENT y ahora quiero:
ALTER IGNORE TABLE `my_table`
ADD UNIQUE (`type`, `owner`);
Por supuesto que tengo pocos registros con type = 'Apple' y owner = 'Apple CO'. Así que mi pregunta es ¿qué registro será el especial para quedarse después de esa TABLA ALTER, el que tenga la identificación más pequeña o tal vez el que tenga la mayor como la última insertada?
1 answers
El primer registro se mantendrá, el resto se eliminará §§:
IGNORE
es una extensión de MySQL para SQL estándar. Controla cómo ALTERAR LA TABLA funciona si hay duplicados en claves únicas en la nueva tabla o si las advertencias ocurren cuando el modo estricto es permitir. Si no se especificaIGNORE
, la copia se aborta y se revierte si se producen errores de clave duplicada. IfIGNORE
se especifica, solo la primera fila es usado de filas con duplicados en un clave única, La otra filas en conflicto se suprimen . Valores incorrectos truncado a la coincidencia más cercana valor aceptable
Supongo que 'primero' aquí significa el que tiene el ID más pequeño, asumiendo que el ID es la clave primaria.
También tenga en cuenta:
A partir de MySQL 5.7.4, la cláusula
IGNORE
paraALTER TABLE
es eliminada y su uso produce un error .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-06 09:45:03