Видалення унікального обмеження з таблиці MySQL


Відповіді:


344

Унікальним обмеженням є також індекс.

Спочатку скористайтеся SHOW INDEX FROM tbl_nameдля з’ясування назви індексу. Ім’я індексу зберігається у стовпці, який називається key_nameв результатах цього запиту.

Тоді ви можете використовувати DROP INDEX :

DROP INDEX index_name ON tbl_name

або синтаксис ALTER TABLE :

ALTER TABLE tbl_name DROP INDEX index_name

1
Вибачте, сер я спробував це, перш ніж ставити питання, але його не
спрацювало

@Ankur Mukherjee: Я забув згадати: Ви повинні змінити tbl_name та index_name на ім'я фактичної таблиці та ім'я фактичного індексу відповідно. Імена ви можете побачити в браузері запитів MySQL. Ви також можете зробити SHOW CREATE TABLE tbl_name.
Марк Байєрс

Повідомлення про помилку: "Ви маєте помилку у вашому синтаксисі SQL; перевірте посібник, який відповідає вашій версії сервера MySQL, чи правильно використовувати синтаксис біля" (player_id, рік, турнір) "у рядку 1"
Ankur Mukherjee

1
@Ankur Mukherjee: Те, що я запропонував, на мій погляд, найкращий спосіб зробити це.
Марк Байєрс

1
Я десь читав питання, використовуючи phpMyAdmin ... Відповідь, надану @systemovich, слід позначати як прийняту.
Пер

123

Ви можете DROPунікальне обмеження з таблиці, використовуючи phpMyAdmin за запитом, як показано в таблиці нижче. Унікальне обмеження було накладено на поле Крила. У цьому випадку ім'я обмеження те саме, що і ім'я поля.

alt текст


34
Важливо зазначити, що розділ індексів згортається за замовчуванням і розширюється невеликим, тонким посиланням шрифтом 12 пікселів, де розділ знаходиться на знімку екрана. Але завдяки вам я знайшов це. Благословіть своє обличчя. +1
Джек

11

Індексами, здатними розмістити на столі унікальне обмеження ключа, є PRIMARYі UNIQUEіндекси.

Щоб видалити унікальне обмеження ключів у стовпці, але зберегти індекс, ви можете видалити та відтворити індекс з типом INDEX.

Зауважте, що для всіх таблиць є корисним позначення індексу PRIMARY.


2
Оновлено, оскільки @thomasrutter торкнувся того, що видалення унікального обмеження може негативно вплинути на ефективність запитів - і це можна пом'якшити, замінивши UNIQUEіндекс на звичайний INDEX.
Алекс

4

Щоб додати UNIQUE обмеження за допомогою phpmyadmin, перейдіть до структури цієї таблиці та знайдіть нижче та натисніть це,

введіть тут опис зображення

Щоб видалити UNIQUE обмеження таким же способом, перейдіть до структури та прокрутіть униз до вкладки "Індекси" та знайдіть нижче та натисніть падіння, введіть тут опис зображення

Сподіваюся, це працює.

Насолоджуйтесь;)


це рішення було саме те, що я шукав.
Aryeh Beitz

2

Для WAMP 3.0: клацніть Структура нижче Додайте 1 стовпець, ви побачите '- Індекси' Клацніть -Індекси та опустіть той індекс, який ви хочете.


2

Якщо ви хочете видалити унікальні обмеження з таблиці бази даних mysql, використовуйте таблицю alter з індексом падіння.

Приклад:

створити таблицю унікальних_обмежень (unid int, Activity_name varchar (100), CONSTRAINT Activty_uqniue UNIQUE (ім'я_дія_зв’язку), первинний ключ (unid));

alter table unique_constraints drop index activty_uqniue;

Де activty_uqniue це обмеження унікальності для ACTIVITY_NAME стовпчика.


0

під час скидання унікального ключа ми використовуємо індекс

ALTER TABLE tbl
DROP INDEX  unique_address;

0

Обмеження можна видалити за допомогою синтаксису:

АЛЬТЕР ТАБЛИЦЯ

Як і в MySQL 8.0.19, ALTER TABLE дозволяє більш загальний (і стандарт SQL) синтаксис для скидання та зміни існуючих обмежень будь-якого типу, де тип обмеження визначається з імені обмеження: ALTER TABLE tbl_name DROP CONSTRAINT symbol;

Приклад:

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 <> скриптова демонстрація


-3

моє ім’я таблиці - покупці, у яких є унікальний стовпець обмеження emp_id, тепер я збираюся скинути emp_id

крок 1: exec sp_helpindex покупці, дивіться файл зображення

крок 2: скопіюйте індексну адресу

введіть тут опис зображення

step3: змінити покупців таблиці обмеження падіння обмеження [UQ__buyers__1299A860D9793F2E] змінити покупців таблиці стовпців drop_id

Примітка:

Блок-котирування

замість покупців поміняйте його на назву столу :)

Блок-котирування

ось все ім'я стовпця emp_id з обмеженнями випадає!


-5
  1. Спочатку видаліть таблицю

  2. перейти до SQL

Використовуйте цей код:

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`);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.