Нахождение к какой таблице принадлежит ограничение - PullRequest
19 голосов
/ 12 мая 2010

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

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

Ответы [ 3 ]

28 голосов
/ 16 мая 2010

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

SELECT
   OBJECT_NAME(o.parent_object_id)
FROM
   sys.objects o
WHERE
   o.name = 'MyConstraintName' AND o.parent_object_id <> 0
2 голосов
/ 12 мая 2010

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

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

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

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

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

0 голосов
/ 07 апреля 2019

гбн, ваше решение не работает, шов?

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)

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

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