Мне нужно вывести информацию об ограничениях для данной таблицы. Я нашел много тесно связанной информации здесь, в SO, но я не нахожу пару конкретных частей информации.
Мне нужно, чтобы результат выглядел так в результатах запроса:
CONSTRAINT_NAME CONSTRAINT_TYPE COLUMN_NAME REFERENCED_TABLE REFERENCED_COLUMN
В настоящее время у меня есть этот запрос:
SELECT
obj_Constraint.NAME AS CONSTRAINT_NAME,
obj_Constraint.type_desc AS CONSTRAINT_TYPE,
'' AS COLUMN_NAME,
'' AS REFERENCED_TABLE,
columns.NAME AS REFERENCED_COLUMN
FROM sys.objects AS obj_table
LEFT JOIN sys.objects AS obj_Constraint ON obj_table.object_id = obj_Constraint.parent_object_id
LEFT JOIN sys.sysconstraints AS constraints ON constraints.constid = obj_Constraint.object_id
LEFT JOIN sys.columns AS columns ON columns.object_id = obj_table.object_id AND columns.column_id = constraints.colid
WHERE obj_table.name = 'some_table'
ORDER BY obj_Constraint.type_desc
Откуда я могу получить информацию о ссылочной таблице (внешнем ключе) и столбце?
(мне нужен запрос, совместимый с версиями SQL Server 2008 и более поздними версиями)
EDIT
Исходя из первоначальных ответов, я, возможно, не получил четкого представления о желаемых результатах.
Допустим, у меня есть таблица "people" с колонками "poepleID", "name", "city", "stateID". Первичный ключ находится в столбце poepleID. У меня также есть таблица "States" с "StateID" и "State". Первичный ключ для этого находится в столбце stateID. Вы можете догадаться, что у меня есть ограничение внешнего ключа для people.stateID. Я назову это FK__people__states__stateID
Так что мне нужен запрос, который выведет это:
CONSTRAINT_NAME CONSTRAINT_TYPE COLUMN_NAME REFERENCED_TABLE REFERENCED_COLUMN
PK__people PRIMARY_KEY_CONSTRAINT peopleID
FK__people__states__stateID FOREIGN_KEY_CONSTRAINT stateID states stateID
Мне нужно перечислить все ключевые ограничения (первичные, внешние - любые) в рассматриваемой таблице (в данном случае "люди").