Eliminazione del vincolo univoco dalla tabella MySQL


Risposte:


345

Un vincolo univoco è anche un indice.

Primo utilizzo SHOW INDEX FROM tbl_nameper scoprire il nome dell'indice. Il nome dell'indice è memorizzato nella colonna chiamatakey_name nei risultati di quella query.

Quindi è possibile utilizzare DROP INDEX :

DROP INDEX index_name ON tbl_name

o la sintassi ALTER TABLE :

ALTER TABLE tbl_name DROP INDEX index_name

1
Mi dispiace signore, l'ho provato prima di sollevare la domanda, ma non funziona
Ankur Mukherjee,

@Ankur Mukherjee: ho dimenticato di menzionare: devi cambiare tbl_name e index_name con il nome della tabella effettiva e il nome dell'indice effettivo, rispettivamente. Puoi vedere i nomi in MySQL Query Browser. Puoi anche fare SHOW CREATE TABLE tbl_name.
Mark Byers,

Messaggio di errore: "Hai un errore nella sintassi SQL; controlla il manuale corrispondente alla versione del tuo server MySQL per la sintassi corretta da usare vicino a '(player_id, anno, torneo)' alla riga 1"
Ankur Mukherjee

1
@Ankur Mukherjee: Il modo in cui ho suggerito è secondo me il modo migliore per farlo.
Mark Byers,

1
Ho letto da qualche parte nella domanda usando phpMyAdmin ... La risposta fornita da @systemovich dovrebbe essere contrassegnata come accettata.
Pere,

123

È possibile DROPun vincolo univoco da una tabella utilizzando phpMyAdmin come richiesto, come mostrato nella tabella seguente. Un vincolo univoco è stato inserito nel campo Wingspan. Il nome del vincolo è uguale al nome del campo, in questo caso.

testo alternativo


34
È importante notare che la sezione degli indici è compressa per impostazione predefinita ed è espansa da un piccolo collegamento sottile nel carattere 12px in cui la sezione si trova nello screenshot. Ma grazie a te l'ho trovato. Benedici il tuo viso. +1
Jack,

11

Gli indici in grado di posizionare un vincolo chiave univoco su una tabella sono PRIMARYe UNIQUEindici.

Per rimuovere il vincolo di chiave univoco su una colonna ma mantenere l'indice, è possibile rimuovere e ricreare l'indice con il tipo INDEX.

Si noti che è consigliabile che tutte le tabelle abbiano un indice contrassegnato PRIMARY.


2
È stato votato perché @thomasrutter ha toccato il fatto che la rimozione di un vincolo univoco può influire negativamente sulle prestazioni della query e ciò può essere mitigato sostituendo l' UNIQUEindice con un normale INDEX.
Alex,

4

Per aggiungere un vincolo UNIQUE usando phpmyadmin, vai alla struttura di quella tabella e trova sotto e fai clic,

inserisci qui la descrizione dell'immagine

Per rimuovere il vincolo UNIQUE, allo stesso modo, vai alla struttura e scorri verso il basso fino alla scheda Indexes, trova sotto e fai clic su drop, inserisci qui la descrizione dell'immagine

Spero che funzioni.

Godere ;)


questa soluzione era esattamente quello che stavo cercando.
Aryeh Beitz,

2

Per WAMP 3.0: fai clic su Struttura sotto Aggiungi 1 colonna e vedrai "- Indici". Fai clic su -Index e rilascia qualsiasi indice desideri.


2

Se si desidera rimuovere vincoli univoci dalla tabella del database mysql, utilizzare alter table con indice di rilascio.

Esempio:

crea tabella unique_constraints (unid int, activity_name varchar (100), CONSTRAINT activty_uqniue UNIQUE (activity_name), chiave primaria (unid));

alter table unique_constraints drop index activty_uqniue;

Dove activty_uqniue è vincolo UNIQUE per ACTIVITY_NAME colonna.


0

mentre rilasciamo la chiave univoca usiamo l'indice

ALTER TABLE tbl
DROP INDEX  unique_address;

0

Il vincolo potrebbe essere rimosso con la sintassi:

ALTER TABLE

A partire da MySQL 8.0.19, ALTER TABLE consente una sintassi più generale (e standard SQL) per eliminare e modificare i vincoli esistenti di qualsiasi tipo, in cui il tipo di vincolo è determinato dal nome del vincolo: ALTER TABLE tbl_name DROP CONSTRAINT symbol;

Esempio:

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 violino


-3

il nome della mia tabella è acquirenti che ha una colonna di vincolo univoca emp_id ora iam sta per eliminare emp_id

passaggio 1: esegui gli acquirenti sp_helpindex, vedi il file immagine

passaggio 2: copiare l'indirizzo dell'indice

inserisci qui la descrizione dell'immagine

passaggio 3: modifica del vincolo di eliminazione degli acquirenti di tabelle [UQ__buyers__1299A860D9793F2E] modifica della colonna di eliminazione degli acquirenti di tabelle emp_id

Nota:

blockquote

invece degli acquirenti cambiarlo con il nome del tuo tavolo :)

blockquote

questo è tutto il nome della colonna emp_id con vincoli viene eliminato!


-5
  1. Prima elimina la tabella

  2. vai a SQL

Usa questo codice:

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`);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.