Как мне показать уникальные ограничения таблицы в MySQL? - PullRequest
24 голосов
/ 03 декабря 2009

Я создал их, но я забыл, какие они.

Я просто хочу

  1. покажи их.
  2. удалить все ограничения на таблицу.

Ответы [ 4 ]

61 голосов
/ 21 мая 2014
select distinct CONSTRAINT_NAME
from information_schema.TABLE_CONSTRAINTS
where table_name = 'table_name' and constraint_type = 'UNIQUE';
8 голосов
/ 03 декабря 2009
select distinct CONSTRAINT_NAME
from information_schema.TABLE_CONSTRAINTS
where CONSTRAINT_SCHEMA = 'mysql'
5 голосов
/ 15 ноября 2017

Это не дает элегантного вывода, но легко запомнить:

SHOW CREATE TABLE table_name;
2 голосов
/ 18 января 2018

ОП попросил одну таблицу, которая будет делать.

Кроме того, при удалении последнего предложения where будут показаны все столбцы базы данных, которые защищены уникальными ограничениями:

SELECT
  CONSTRAINT_NAME,
  TABLE_NAME,
  COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE
  CONSTRAINT_NAME LIKE 'UNIQ%'
  AND TABLE_SCHEMA = 'your_database_name'
  AND TABLE_NAME = 'your_table_name';

К сожалению, mysql не облегчает удаление индексов, основанных на результате запроса. Вы можете выполнить вывод следующего запроса, чтобы отбросить все уникальные столбцы в 2 запросах:

SELECT CONCAT(
  'ALTER TABLE ',
  TABLE_NAME,
  ' DROP INDEX ',
  CONSTRAINT_NAME,
  '; -- drops ',
  COLUMN_NAME,
  ' constraint'
)
FROM information_schema.KEY_COLUMN_USAGE
WHERE
  CONSTRAINT_NAME LIKE 'UNIQ%'
  AND TABLE_SCHEMA = 'your_database_name';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...