Как получить список всех таблиц, имеющих столбцы идентификаторов - программирование
Подтвердить что ты не робот

Как получить список всех таблиц, имеющих столбцы идентификаторов

Я хотел бы узнать, как получить список всех таблиц, имеющих столбцы идентификаторов из базы данных MS SQL.

4b9b3361

Ответ 1

SELECT 
  [schema] = s.name,
  [table] = t.name
FROM sys.schemas AS s
INNER JOIN sys.tables AS t
  ON s.[schema_id] = t.[schema_id]
WHERE EXISTS 
(
  SELECT 1 FROM sys.identity_columns
    WHERE [object_id] = t.[object_id]
);

Ответ 2

      select COLUMN_NAME, TABLE_NAME
      from INFORMATION_SCHEMA.COLUMNS
       where TABLE_SCHEMA = 'dbo'
       and COLUMNPROPERTY(object_id(TABLE_NAME), COLUMN_NAME, 'IsIdentity') = 1
       order by TABLE_NAME

Ответ 3

Мне нравится этот подход, потому что он использует соединение вместо WHERE EXISTS или вызов COLUMNPROPERTY. Обратите внимание, что группа только необходима, если вы a) имеете таблицы с более чем одним столбцом IDENTITY и b) не хотите дублировать результаты:

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;

Ответ 4

Ниже приведено script:

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 

Ответ 5

Выберите OBJECT_NAME (object_Id) Rrom sys.identity_columns где is_identity = 1;