Список ограничений из базы данных MySQL

Как получить список всех ограничений из конкретной базы данных?

Ответ 1

Используйте таблицу information_schema.table_constraints, чтобы получить имена ограничений, определенных для каждой таблицы:

select *
from information_schema.table_constraints
where constraint_schema = 'YOUR_DB'

Используйте таблицу information_schema.key_column_usage, чтобы получить поля в каждом из этих ограничений:

select *
from information_schema.key_column_usage
where constraint_schema = 'YOUR_DB'

Если вместо этого вы говорите о ограничениях внешнего ключа, используйте information_schema.referential_constraints:

select *
from information_schema.referential_constraints
where constraint_schema = 'YOUR_DB'

Ответ 2

Отличный ответ от @Senseful.

Я представляю измененный запрос для тех, кто ищет список имен ограничений (а не другие детали/столбцы):

SELECT DISTINCT(constraint_name) 
FROM information_schema.table_constraints 
WHERE constraint_schema = 'YOUR_DB' 
ORDER BY constraint_name ASC;

Ответ 3

SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME = "tabnam";