我想在sql server中检索所有具有标识列的表名。有没有办法通过查询来实现它而不循环遍历sys.columns中的所有列?
谢谢
答案 0 :(得分:3)
是的。您可以查询sys.identity_columns目录:
select t.name TableName
from sys.tables t
where exists (select 1 from sys.identity_columns where [object_id] = t.[object_id])
答案 1 :(得分:0)
INFORMATION_SCHEMA.COLUMNS有很多信息列,例如列长,数据类型等。
在这种情况下,我们会使用它来提取有关标识列的信息。
select TABLE_NAME + '.' + 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
另一个有用的是INFORMATION_SCHEMA.TABLES,用于提供表格列表。