Я хотел бы узнать, как получить список всех таблиц, содержащих столбцы идентификаторов, из базы данных MS SQL.
Как получить список всех таблиц, в которых есть столбцы идентификаторов
Ответы (4)
Мне нравится этот подход, потому что он использует объединение вместо WHERE EXISTS или вызова COLUMNPROPERTY. Обратите внимание, что группировка необходима только в том случае, если у вас а) есть таблицы с более чем одним столбцом IDENTITY и б) вы не хотите дублировать результаты:
SELECT
SchemaName = s.name,
TableName = t.name
FROM
sys.schemas AS s
INNER JOIN sys.tables AS t ON s.schema_id = t.schema_id
INNER JOIN sys.columns AS c ON t.object_id = c.object_id
INNER JOIN sys.identity_columns AS ic on c.object_id = ic.object_id AND c.column_id = ic.column_id
GROUP BY
s.name,
t.name
ORDER BY
s.name,
t.name;
person
bopapa_1979
schedule
06.11.2014
Сценарий ниже сделает:
SELECT a.name as TableName,
CASE WHEN b.name IS NULL
THEN 'No Identity Column'
ELSE b.name
END as IdentityColumnName
FROM sys.tables a
LEFT JOIN sys.identity_columns b on a.object_id = b.object_id
person
user6232480
schedule
06.12.2017
Выберите OBJECT_NAME(object_Id) Rrom sys.identity_columns, где is_identity = 1;
person
Muhammad Saleh
schedule
25.11.2017
person
schedule
Пожалуйста, добавьте краткое объяснение вашего кода. Ответы только на код (иногда) хороши, но ответы на код + объяснение (всегда) лучше.
- person Barranka; 01.08.2014