Подтвердить что ты не робот

Поиск таблицы, к которой относится ограничение

Мне нужно выяснить, к какой таблице (имени) относится конкретное ограничение.

Есть ли у кого-нибудь TSQL для достижения этого?

4b9b3361

Ответ 1

многие вещи можно рассматривать как ограничение:

первичный ключ
внешний ключ
уникальный индекс
проверить ограничение
по умолчанию столбца

ваш вопрос немного расплывчатый. Вы знаете имя ограничения, тип и т.д.?

Основываясь на ограниченной информации в вашем вопросе. Я предлагаю вам посмотреть исходный код на хранимую процедуру master.sys.sp_helpconstraint.

В Sql Server Management Studio с помощью Обозревателя объектов ust перейдите к: "Базы данных" - "Базы данных системы" - "Мастер" - "Программируемость" - "Хранимые процедуры" - "Хранимые процедуры системы" - "sys.sp_helpconstraint". Он содержит все tsql для запроса всех различных ограничений.

Ответ 2

Это не найдет индексы, которые находятся в sys.indexes

SELECT
   OBJECT_NAME(o.parent_object_id)
FROM
   sys.objects o
WHERE
   o.name = 'MyConstraintName' AND o.parent_object_id <> 0

Ответ 3

ГБН, ваше решение не работает?

SELECT
   OBJECT_NAME(o.parent_object_id)
FROM
   sys.objects o
WHERE
   o.name = 'MyConstraintName' AND o.parent_object_id <> 0

Таким образом, если "MyConstraintName" становится "FK_myConstraint", тогда запрос становится

SELECT OBJECT_NAME(o.parent_object_id)
FROM sys.objects o
WHERE o.name = 'MyConstraintName' 
  AND o.parent_object_id <> 0

Который не дает результатов

(No column name)

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