¿Cómo soltar único en MySQL?


139
Create Table: CREATE TABLE `fuinfo` (
  `fid` int(10) unsigned NOT NULL,
  `name` varchar(40) NOT NULL,
  `email` varchar(128) NOT NULL,
  UNIQUE KEY `email` (`email`),
  UNIQUE KEY `fid` (`fid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

Quiero soltar la clave única email, ¿cómo?

Respuestas:


278

Simplemente puede usar la siguiente secuencia de comandos SQL para eliminar el índice en MySQL:

alter table fuinfo drop index email;

26
Tenga en cuenta que es posible que no pueda soltar una clave como esta si emailexiste una clave externa para la columna (error 150). Para que esto funcione, suelte primero la clave externa, luego suelte el índice y vuelva a crear la clave externa después. por ejemplo, ALTER TABLE fuinfo DROP clave externa fk_name_for_email;
Brad Parks

61

Hay una mejor manera que no necesita alterar la tabla:

mysql> DROP INDEX email ON fuinfo;

donde correo electrónico es el nombre de la clave única (índice).

También puedes traerlo de vuelta así:

mysql> CREATE UNIQUE INDEX email ON fuinfo(email);

donde el correo electrónico después de IDEX es el nombre del índice y no es opcional. Puede usar KEY en lugar de INDEX.

También es posible crear (eliminar) sangrías únicas de varias columnas como esa:

mysql> CREATE UNIQUE INDEX email_fid ON fuinfo(email, fid);
mysql> DROP INDEX email_fid ON fuinfo;

Si no especificó el nombre del índice de varias columnas, puede eliminarlo así:

mysql> DROP INDEX email ON fuinfo;

donde correo electrónico es el nombre de la columna.


55
De todos modos, todo esto hará una TABLA DE ALTERACIÓN, así que no es como si realmente estuvieras evitando eso. Es solo una sintaxis diferente para la misma cosa.
mpeters

9

mysql> DROP INDEX email EN fuinfo;

donde el correo electrónico es la clave única (en lugar del nombre de la columna). Encuentra el nombre de la clave única por

mysql> SHOW CREATE TABLE fuinfo;

Aquí puede ver el nombre de la clave única, que podría ser email_2, por ejemplo. Entonces...

mysql> DROP INDEX email_2 ON fuinfo;

mysql> DESCRIBE fuinfo;

Esto debería mostrar que el índice se elimina


5

Utilice la consulta a continuación:

ALTER TABLE `table_name` DROP INDEX key_name;

Si no conoce el nombre_clave, primero intente debajo de la consulta, puede obtener el nombre_clave.

SHOW CREATE TABLE table_name

O

SHOW INDEX FROM table_name;

Si desea eliminar / soltar la clave primaria de la tabla mysql, use la consulta a continuación para eso

ALTER TABLE `products` DROP INDEX `PRIMARY`;

Código tomado de: http://chandreshrana.blogspot.in/2015/10/how-to-remove-unique-key-from-mysql.html


4

DROP INDEX column_nameON nombre_tabla

Seleccione la base de datos y consulte la pestaña sql. Esto elimina el índice de la columna en particular. Funcionó para mí en PHP MyADMIN



2

Para MySQL 5.7.11

Paso 1: Primero obtén la clave única

Use esta consulta para obtenerla:

1.1) MOSTRAR CREAR TABLA Usuario;

En el último, será así:

.....

.....

CLAVE ÚNICA UK_8bv559q1gobqoulqpitq0gvr6( phoneNum)

.....

....

Paso 2: elimine la clave única mediante esta consulta.

ALTER TABLE User DROP INDEX UK_8bv559q1gobqoulqpitq0gvr6;

Paso 3: Verifique la información de la tabla, mediante esta consulta:

Usuario DESC;

Esto debería mostrar que el índice se elimina

Eso es todo.



1

Pruébelo para eliminar la uique de una columna:

ALTER TABLE  `0_ms_labdip_details` DROP INDEX column_tcx

Ejecute este código en phpmyadmin y elimine el exclusivo de la columna


0
 ALTER TABLE [table name] DROP KEY [key name];

Esto funcionará.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.