Уникальные индексы не обязательно присутствуют в представлении table_constraints: так как же их найти с помощью Information_schema?

Этот запрос не найдет уникальные индексы, которые явно не используются вместе с ограничением:

select TC.Constraint_Name, CC.Column_Name 
from information_schema.table_constraints TC
inner join information_schema.constraint_column_usage CC
on TC.Constraint_Name = CC.Constraint_Name
where TC.constraint_type = 'Unique'
order by TC.Constraint_Name

Итак, как же можно найти подразумеваемое уникальное ограничение, подобное следующему, с помощью INFORMATION_SCHEMA?

create unique constraint PipelineSummary_CorrelationId on
bronze.AggregatedPipelineSummary (CorrelationId);

Почему закрытое голосование?

WestCoastProjects 06.04.2024 05:37

Это не так, это переход на лучший сайт, например dba.stackexchange.com

Dale K 06.04.2024 06:14

это интересно: значит, SQL больше не является серьезной темой SOF? Это для разработки SQL, а не для работы администратором базы данных.

WestCoastProjects 06.04.2024 07:49

Я бы избегал использования Information_schema, это в основном из-за совместимости. Вместо этого проверьте sys.indexes и sys.objects.

siggemannen 06.04.2024 08:47

@WestCoastProjects — это просто вопрос, который нужно задать лучшим экспертам. Поэтому, когда речь идет о более технических вопросах, касающихся баз данных, помимо разработки и запросов, вы с большей вероятностью получите там лучший/быстрый ответ.

Dale K 06.04.2024 11:02
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
5
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Представления INFORMATION_SCHEMA обеспечивают стандартизированное и упрощенное представление каталога вашей базы данных. Он ограничен отображением «логического» представления вашей базы данных и не отображает многие аспекты конструкции вашей базы данных, специфичные для SQL Server.

Поэтому вместо этого используйте собственные представления каталога SQL Server, здесь sys.indexes, например:

select o.name table_name, i.name index_name, i.is_unique_constraint
from sys.objects o
join sys.indexes i
  on o.object_id = i.object_id
where is_unique=1
and o.is_ms_shipped = 0

Хорошо, я задал несколько сложных запросов к INFORMATION_SCHEMA, но по сути начну сначала - учитывая официальный ответ здесь. Спасибо за ваш вклад!

WestCoastProjects 06.04.2024 17:10

Другие вопросы по теме