Справка по SQL - найдите таблицу, в которой в качестве первичного ключа указан somefieldId? - PullRequest
2 голосов
/ 13 мая 2010

Как мне найти в моей базе данных sql таблицу, содержащую поле tiEntityId. Это поле указано в хранимой процедуре, но я не могу определить, для какой таблицы этот идентификатор является первичным ключом? Какие-либо предложения? В настоящее время я просматриваю определения хранимых процедур для ссылок на текст, используя что-то вроде этого:

Declare @Search varchar(255)
SET @Search='[10.10.100.50]'

SELECT DISTINCT
o.name AS Object_Name,o.type_desc
FROM sys.sql_modules        m 
    INNER JOIN sys.objects  o ON m.object_id=o.object_id
WHERE m.definition Like '%'+@Search+'%'
ORDER BY 2,1

Любой гуру SQL знает, что мне нужно использовать, чтобы найти таблицу, содержащую поле, предпочтительно таблицу, где это поле является Первичным ключом.

Ответы [ 2 ]

2 голосов
/ 13 мая 2010

Вы можете сделать:

select table_name
from INFORMATION_SCHEMA.COLUMNS
where column_name = 'MyColumn'
1 голос
/ 13 мая 2010

Если вы ищете первичные ключи, которые содержат столбец с заданным именем (в SQL 2005+), то вы идете:

select so.name as TableName,
       si.name as IndexName,
       sc.name as ColumnName
  from sys.indexes si
  join sys.index_columns sic
    on si.object_id = sic.object_id
   and si.index_id = sic.index_id
  join sys.columns sc
    on si.object_id = sc.object_id
   and sic.column_id = sc.column_id
  join sys.objects so
    on si.object_id = so.object_id
 where sc.name like '%ColumnName%'
   and si.is_primary_key = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...