Removendo restrição exclusiva da tabela MySQL

Respostas:

345

Uma restrição exclusiva também é um índice.

Primeiro use SHOW INDEX FROM tbl_namepara descobrir o nome do índice. O nome do índice é armazenado na coluna chamada key_namenos resultados dessa consulta.

Então você pode usar o DROP INDEX :

DROP INDEX index_name ON tbl_name

ou a sintaxe ALTER TABLE :

ALTER TABLE tbl_name DROP INDEX index_name
Mark Byers
fonte
1
Desculpe senhor i tinha tentado antes de levantar a questão, mas não o seu trabalho
Ankur Mukherjee
@ Ankur Mukherjee: Eu esqueci de mencionar: Você tem que mudar tbl_name e index_name para o nome da sua tabela atual e o nome do índice real, respectivamente. Você pode ver os nomes no MySQL Query Browser. Você também pode fazer SHOW CREATE TABLE tbl_name.
precisa
Mensagem de erro: "Você tem um erro na sintaxe SQL; verifique o manual que corresponde à versão do servidor MySQL para obter a sintaxe correta perto de '(player_id, ano, torneio)' na linha 1"
Ankur Mukherjee
1
@Ankur Mukherjee: A maneira que sugeri é, na minha opinião, a melhor maneira de fazer isso.
precisa
1
Li em algum lugar da pergunta usando o phpMyAdmin ... A resposta fornecida por @systemovich deve ser marcada como aceita.
Pere
123

Você pode fazer DROPuma restrição exclusiva de uma tabela usando o phpMyAdmin, conforme solicitado, conforme mostrado na tabela abaixo. Uma restrição exclusiva foi colocada no campo Envergadura. O nome da restrição é o mesmo que o nome do campo, nesta instância.

texto alternativo

systemovich
fonte
34
É importante observar que a seção de índices é recolhida por padrão e é expandida por um link pequeno e sutil na fonte 12px, onde a seção está na captura de tela. Mas graças a você, eu encontrei. Abençoe seu rosto. 1
Jack
11

Os índices capazes de colocar uma restrição de chave exclusiva em uma tabela são PRIMARYe UNIQUEíndices.

Para remover a restrição de chave única sobre uma coluna, mas manter o índice, você pode remover e recriar o índice com o tipo INDEX.

Observe que é uma boa ideia que todas as tabelas tenham um índice marcado PRIMARY.

thomasrutter
fonte
2
Promovido porque o @thomasrutter tocou no fato de que a remoção de uma restrição exclusiva pode afetar adversamente o desempenho da consulta - e isso pode ser atenuado substituindo o UNIQUEíndice por um regular INDEX.
Alex
4

Para adicionar restrição UNIQUE usando phpmyadmin, vá para a estrutura dessa tabela, localize abaixo e clique nela,

insira a descrição da imagem aqui

Para remover a restrição UNIQUE, da mesma maneira, vá para a estrutura e role para baixo até a guia Índices, localize abaixo e clique em soltar, insira a descrição da imagem aqui

Espero que isso funcione.

Aproveitar ;)

Umesh Patil
fonte
Esta solução foi exatamente o que eu estava procurando.
Aryeh Beitz
2

Para o WAMP 3.0: Clique em Estrutura abaixo de Adicionar 1 coluna e você verá '- Índices' Clique em Índices e soltará o índice que desejar.

Jeffry Louis
fonte
2

Se você deseja remover restrições exclusivas da tabela de banco de dados mysql, use alter table com drop index.

Exemplo:

criar tabela unique_constraints (unid int, nome_da_ atividade varchar (100), CONSTRAINT activety_uqniue UNIQUE (nome_da_ atividade), chave primária (unid));

alter table unique_constraints drop index activty_uqniue;

Onde activty_uqniue é restrição UNIQUE para a coluna activity_name .

Manjunatha HC
fonte
0

ao soltar chave exclusiva usamos índice

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

A restrição pode ser removida com sintaxe:

ALTERAR A TABELA

No MySQL 8.0.19, ALTER TABLE permite uma sintaxe mais geral (e padrão SQL) para descartar e alterar restrições existentes de qualquer tipo, em que o tipo de restrição é determinado a partir do nome da restrição: ALTER TABLE tbl_name DROP CONSTRAINT symbol;

Exemplo:

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 <> demo de violino

Lukasz Szozda
fonte
-3

meu nome de tabela é compradores que possuem uma coluna de restrição exclusiva emp_id agora iam soltar o emp_id

etapa 1: exec sp_helpindex compradores, consulte o arquivo de imagem

etapa 2: copiar o endereço do índice

insira a descrição da imagem aqui

step3: alterar compradores da tabela eliminam a restrição [UQ__buyers__1299A860D9793F2E] alterar compradores da tabela eliminam a coluna emp_id

Nota:

Bloco de citação

em vez de compradores, altere-o para o nome da sua tabela :)

Bloco de citação

isso é todo o nome da coluna emp_id com restrições eliminado!

vignesh .B
fonte
-5
  1. Primeira tabela de exclusão

  2. vá para SQL

Use 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
fonte