Descarte de la restricción Unique de la tabla MySQL

Respuestas:

345

Una restricción única también es un índice.

Primer uso SHOW INDEX FROM tbl_namepara averiguar el nombre del índice. El nombre del índice se almacena en la columna llamada key_nameen los resultados de esa consulta.

Entonces puedes usar DROP INDEX :

DROP INDEX index_name ON tbl_name

o la sintaxis ALTER TABLE :

ALTER TABLE tbl_name DROP INDEX index_name
Mark Byers
fuente
1
Lo siento señor, lo había intentado antes de plantear la pregunta, pero no funciona
Ankur Mukherjee
@Ankur Mukherjee: Olvidé mencionar: tiene que cambiar tbl_name e index_name por el nombre de su tabla real y el nombre del índice real, respectivamente. Puede ver los nombres en MySQL Query Browser. Tambien puedes hacerSHOW CREATE TABLE tbl_name .
Mark Byers
Mensaje de error: "Tiene un error en su sintaxis SQL; consulte el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta para usar cerca de '(id_jugador, año, torneo)' en la línea 1"
Ankur Mukherjee
1
@Ankur Mukherjee: La forma en que he sugerido es, en mi opinión, la mejor manera de hacerlo.
Mark Byers
1
Leí en alguna parte de la pregunta usando phpMyAdmin ... La respuesta proporcionada por @systemovich debe marcarse como la aceptada.
Pere
123

Puede DROPuna restricción única de una tabla usando phpMyAdmin según lo solicitado como se muestra en la tabla a continuación. Se ha colocado una restricción única en el campo Envergadura. El nombre de la restricción es el mismo que el nombre del campo, en este caso.

texto alternativo

systemovich
fuente
34
Es importante tener en cuenta que la sección de índices se contrae de manera predeterminada y se expande mediante un enlace pequeño y sutil en una fuente de 12px donde la sección está en la captura de pantalla. Pero gracias a ti, lo encontré. Bendice tu cara. +1
Jack
11

Los índices capaces de colocar una restricción de clave única en una tabla son PRIMARYe UNIQUEíndices.

Para eliminar la restricción de clave única en una columna pero mantener el índice, puede eliminar y volver a crear el índice con el tipo INDEX.

Tenga en cuenta que es una buena idea que todas las tablas tengan un índice marcado PRIMARY.

thomasrutter
fuente
2
Se votó porque @thomasrutter se ha referido al hecho de que eliminar una restricción única puede afectar negativamente el rendimiento de la consulta , y esto puede mitigarse reemplazando el UNIQUEíndice con un regular INDEX.
Alex
4

Para agregar una restricción ÚNICA usando phpmyadmin, vaya a la estructura de esa tabla y busque a continuación y haga clic en eso,

ingrese la descripción de la imagen aquí

Para eliminar la restricción ÚNICA, de la misma manera, vaya a la estructura y desplácese hacia abajo hasta la pestaña Índices y busque a continuación y haga clic en soltar, ingrese la descripción de la imagen aquí

Espero que esto funcione.

Disfrutar;)

Umesh Patil
fuente
Esta solución era exactamente lo que estaba buscando.
Aryeh Beitz
2

Para WAMP 3.0: haga clic en Estructura debajo de Agregar 1 columna, verá '- Índices' Haga clic en Índices y suelte el índice que desee.

Jeffry Louis
fuente
2

Si desea eliminar restricciones únicas de la tabla de base de datos mysql, use la tabla alter con índice de caída.

Ejemplo:

crear una tabla de restricciones_unicas (unid int, actividad_nombre varchar (100), CONSTRAINT activty_uqniue UNIQUE (actividad_nombre), clave primaria (unid));

alter table unique_constraints drop index activty_uqniue;

Donde activty_uqniue es restricción UNIQUE para ACTIVITY_NAME columna.

Manjunatha HC
fuente
0

al soltar una clave única usamos index

ALTER TABLE tbl
DROP INDEX  unique_address;
Hamza.S
fuente
0

La restricción podría eliminarse con la sintaxis:

ALTERAR TABLA

A partir de MySQL 8.0.19, ALTER TABLE permite una sintaxis más general (y estándar SQL) para eliminar y modificar las restricciones existentes de cualquier tipo, donde el tipo de restricción se determina a partir del nombre de la restricción: ALTER TABLE tbl_name DROP CONSTRAINT symbol;

Ejemplo:

CREATE TABLE tab(id INT, CONSTRAINT unq_tab_id UNIQUE(id));

-- checking constraint name if autogenerated
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'tab';

-- dropping constraint
ALTER TABLE tab DROP CONSTRAINT unq_tab_id;

db <> demostración de violín

Lukasz Szozda
fuente
-3

mi nombre de tabla es compradores que tiene una columna de restricción única emp_id ahora iam va a soltar el emp_id

paso 1: compradores de sp_helpindex exec, ver el archivo de imagen

Paso 2: copie la dirección de índice

ingrese la descripción de la imagen aquí

paso 3: alterar la restricción de caída de los compradores de la tabla [UQ__buyers__1299A860D9793F2E] alterar la columna de caída de los compradores de la tabla emp_id

Nota:

Blockquote

en lugar de compradores, cámbielo al nombre de su mesa :)

Blockquote

eso es todo el nombre de la columna emp_id con restricciones se descarta!

vignesh .B
fuente
-5
  1. Primero eliminar tabla

  2. ir a SQL

Usa este código:

CREATE  TABLE service( --tablename 
  `serviceid` int(11) NOT NULL,--columns
  `customerid` varchar(20) DEFAULT NULL,--columns
  `dos` varchar(30) NOT NULL,--columns
  `productname` varchar(150) NOT NULL,--columns
  `modelnumber` bigint(12) NOT NULL,--columns
  `serialnumber` bigint(20) NOT NULL,--columns
  `serviceby` varchar(20) DEFAULT NULL--columns
)
--INSERT VALUES
INSERT INTO `service` (`serviceid`, `customerid`, `dos`, `productname`, `modelnumber`, `serialnumber`, `serviceby`) VALUES
(1, '1', '12/10/2018', 'mouse', 1234555, 234234324, '9999'),
(2, '09', '12/10/2018', 'vhbgj', 79746385, 18923984, '9999'),
(3, '23', '12/10/2018', 'mouse', 123455534, 11111123, '9999'),
(4, '23', '12/10/2018', 'mouse', 12345, 84848, '9999'),
(5, '546456', '12/10/2018', 'ughg', 772882, 457283, '9999'),
(6, '23', '12/10/2018', 'keyboard', 7878787878, 22222, '1'),
(7, '23', '12/10/2018', 'java', 11, 98908, '9999'),
(8, '128', '12/10/2018', 'mouse', 9912280626, 111111, '9999'),
(9, '23', '15/10/2018', 'hg', 29829354, 4564564646, '9999'),
(10, '12', '15/10/2018', '2', 5256, 888888, '9999');
--before droping table
ALTER TABLE `service`
  ADD PRIMARY KEY (`serviceid`),
  ADD  unique`modelnumber` (`modelnumber`),
  ADD  unique`serialnumber` (`serialnumber`),
  ADD unique`modelnumber_2` (`modelnumber`);
--after droping table
ALTER TABLE `service`
  ADD PRIMARY KEY (`serviceid`),
  ADD  modelnumber` (`modelnumber`),
  ADD  serialnumber` (`serialnumber`),
  ADD modelnumber_2` (`modelnumber`);
RAM
fuente