如何确定 MSSQL 2000 中的列是否为标识列?

47

我想用代码完成这个操作,而不是用ALT+F1。


5个回答

93

你也可以用这种方式实现:

select columnproperty(object_id('mytable'),'mycolumn','IsIdentity')
如果是身份证,则返回1,否则返回0。

1
如果您的表不在默认模式(dbo)中,则需要在表名中指定它 mySchema.myTable - SeReGa

24
sp_help tablename 

在输出结果中查找类似于以下内容的信息:

 Identity     Seed     Increment     Not For Replication    
 -----------  -------  ------------  ---------------------- 
 userid       15500    1             0        

7

根据需要调整WHERE子句:

select
    a.name as TableName,
    b.name as IdentityColumn
from
    sysobjects a inner join syscolumns b on a.id = b.id
where
    columnproperty(a.id, b.name, 'isIdentity') = 1
    and objectproperty(a.id, 'isTable') = 1

1
作为@Blogbeard答案的扩展
如果您喜欢纯查询而不是内置函数
select col_name(sys.all_objects.object_id, column_id) as id from sys.identity_columns 
join sys.all_objects on sys.identity_columns.object_id = sys.all_objects.object_id
where sys.all_objects.name = 'system_files'

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接