在sql server中具有标识列的Retreive表

时间:2018-01-31 11:08:31

标签: sql-server

我想在sql server中检索所有具有标识列的表名。有没有办法通过查询来实现它而不循环遍历sys.columns中的所有列?

谢谢

2 个答案:

答案 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,用于提供表格列表。