Löschen einer eindeutigen Einschränkung aus der MySQL-Tabelle

Antworten:

344

Eine eindeutige Einschränkung ist auch ein Index.

Verwenden Sie zuerst SHOW INDEX FROM tbl_name, um den Namen des Index herauszufinden. Der Name des Index wird in der Spalte gespeichert, die key_namein den Ergebnissen dieser Abfrage aufgerufen wird .

Dann können Sie DROP INDEX verwenden :

DROP INDEX index_name ON tbl_name

oder die ALTER TABLE- Syntax:

ALTER TABLE tbl_name DROP INDEX index_name
Mark Byers
quelle
1
Entschuldigung, Sir, ich hatte es versucht, bevor ich die Frage stellte, aber es funktioniert nicht
Ankur Mukherjee
@Ankur Mukherjee: Ich habe vergessen zu erwähnen: Sie müssen tbl_name und index_name in den Namen Ihrer tatsächlichen Tabelle bzw. den Namen des tatsächlichen Index ändern. Sie können die Namen im MySQL Query Browser sehen. Sie können auch tun SHOW CREATE TABLE tbl_name.
Mark Byers
Fehlermeldung: "Sie haben einen Fehler in Ihrer SQL-Syntax. Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, auf die richtige Syntax für Zeile '(player_id, Jahr, Turnier)' in Zeile 1"
Ankur Mukherjee,
1
@ Ankur Mukherjee: Die Art und Weise, wie ich vorgeschlagen habe, ist meiner Meinung nach der beste Weg, dies zu tun.
Mark Byers
1
Ich habe irgendwo in der Frage mit phpMyAdmin gelesen ... Die Antwort von @systemovich sollte als akzeptiert markiert werden.
Pere
123

Sie können mit phpMyAdminDROP eine eindeutige Einschränkung aus einer Tabelle erstellen, wie in der folgenden Tabelle gezeigt. Für das Wingspan-Feld wurde eine eindeutige Einschränkung festgelegt. Der Name der Einschränkung entspricht in diesem Fall dem Feldnamen.

Alt-Text

systemovich
quelle
34
Es ist wichtig zu beachten, dass der Indexabschnitt standardmäßig reduziert und durch einen kleinen, subtilen Link in 12px-Schriftart erweitert wird, in dem sich der Abschnitt im Screenshot befindet. Aber dank dir habe ich es gefunden. Segne dein Gesicht. +1
Jack
11

Die Indizes, die eine eindeutige Schlüsselbeschränkung für eine Tabelle festlegen können, sind PRIMARYund UNIQUEIndizes.

Um die eindeutige Schlüsselbeschränkung für eine Spalte zu entfernen, aber den Index beizubehalten, können Sie den Index mit dem Typ entfernen und neu erstellen INDEX.

Beachten Sie, dass es für alle Tabellen eine gute Idee ist, einen Index zu markieren PRIMARY.

thomasrutter
quelle
1
Upvoted, weil @thomasrutter die Tatsache angesprochen hat, dass das Entfernen einer eindeutigen Einschränkung die Abfrageleistung beeinträchtigen kann - und dies kann durch Ersetzen des UNIQUEIndex durch einen regulären Index gemindert werden INDEX.
Alex
4

Um eine EINZIGARTIGE Einschränkung mit phpmyadmin hinzuzufügen, gehen Sie zur Struktur dieser Tabelle und suchen Sie unten und klicken Sie darauf.

Geben Sie hier die Bildbeschreibung ein

Um die EINZIGARTIGE Einschränkung auf die gleiche Weise zu entfernen, gehen Sie zur Struktur und scrollen Sie nach unten bis zur Registerkarte "Indizes". Suchen Sie unten und klicken Sie auf "Ablegen". Geben Sie hier die Bildbeschreibung ein

Hoffe das funktioniert.

Genießen ;)

Umesh Patil
quelle
Diese Lösung war genau das, wonach ich gesucht habe.
Aryeh Beitz
2

Für WAMP 3.0: Klicken Sie auf Struktur unter 1 Spalte hinzufügen. Es wird '- Indizes' angezeigt. Klicken Sie auf -Indexe und legen Sie den gewünschten Index ab.

Jeffry Louis
quelle
2

Wenn Sie eindeutige Einschränkungen aus der MySQL-Datenbanktabelle entfernen möchten, verwenden Sie alter table mit drop index.

Beispiel:

Tabelle erstellen unique_constraints (unid int, aktivitätsname varchar (100), CONSTRAINT activty_uqniue UNIQUE (aktivitätsname), Primärschlüssel (unid));

alter table unique_constraints drop index activty_uqniue;

Wobei activty_uqniue eine EINZIGARTIGE Einschränkung für die Spalte activity_name ist .

Manjunatha HC
quelle
0

Beim Löschen des eindeutigen Schlüssels verwenden wir den Index

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

Die Einschränkung könnte mit der folgenden Syntax entfernt werden:

ALTER TABLE

Ab MySQL 8.0.19 ermöglicht ALTER TABLE eine allgemeinere (und SQL-Standard-) Syntax zum Löschen und Ändern vorhandener Einschränkungen eines beliebigen Typs, wobei der Einschränkungstyp aus dem Einschränkungsnamen bestimmt wird: ALTER TABLE tbl_name DROP CONSTRAINT symbol;

Beispiel:

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 <> Geigen-Demo

Lukasz Szozda
quelle
-3

Mein Tabellenname ist Käufer, der eine eindeutige Einschränkungsspalte emp_id hat. Jetzt werde ich die emp_id löschen

Schritt 1: Käufer von exec sp_helpindex, siehe Bilddatei

Schritt 2: Kopieren Sie die Indexadresse

Geben Sie hier die Bildbeschreibung ein

Schritt 3: Drop-Einschränkung für Tabellenkäufer ändern [UQ__buyers__1299A860D9793F2E] Drop-Spalte emp_id für Tabellenkäufer ändern

Hinweis:

Blockquote

anstelle von Käufern ändern Sie es in Ihren Tischnamen :)

Blockquote

das ist alles Spaltenname emp_id mit Einschränkungen wird gelöscht!

vignesh .B
quelle
-5
  1. Zuerst Tabelle löschen

  2. gehe zu SQL

Verwenden Sie diesen Code:

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
quelle