Есть ли способ перечислить или подтвердить ограничения проверки (как это возможно с первичными и внешними ключами) в MySQL? - PullRequest
0 голосов
/ 01 декабря 2019

Если я хочу увидеть ограничения на какую-либо конкретную таблицу, я использовал

describe table_name;

или

show create table table_name;

, и это покажет все, что мне нужно в отношении моих первичных и внешних ключей,но не проверять ограничения. Я также смотрел на получение информации от:

select * from information_schema.constraints where constraint_schema = database_name;

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

Я проверил свои проверочные ограничения дляубедиться, что они работают, преднамеренно нарушив параметры, которые я установил, и обнаружили, что они успешно дают предупреждения и работают по назначению, поэтому я уверен в их использовании. Из того, что я прочитал, ограничения Check - это то, что должным образом поддерживается только в более новых итерациях MySQL, и до того, как они были проанализированы, но проигнорированы. Любая помощь в доказательстве ограничений, таких как первичный или внешний ключ, была бы удивительной.

Кроме того, я приношу свои извинения за неправильное форматирование моего вопроса, это мой первый вопрос о StackOverflow, и я очень ценю, что это бесценный ресурсэто. Если есть какие-либо отзывы о том, что вы считаете неправильным форматированием, я бы приветствовал это, я попытался придерживаться предложений.

1 Ответ

2 голосов
/ 01 декабря 2019

Вы можете использовать таблицы метаданных (MySQL 8.0.16):

SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'CHECK';

или:

SELECT *
FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS;

db <> fiddle demo


РЕДАКТИРОВАТЬ:

В вашей демонстрации я вижу, что ограничения были добавлены в процессе создания таблицы, в то время как мои были добавлены в существующие таблицы. Имеет ли это последствия?

Не все:

CREATE TABLE t(id INT);
ALTER TABLE t ADD CONSTRAINT t_chk_1 CHECK (id > 2);

db <> fiddle demo2

...