我想在代码中执行此操作,而不是使用ALT+F1。
您也可以这样做:
select columnproperty(object_id('mytable'),'mycolumn','IsIdentity')
如果是标识,则返回1;如果不是,则返回0。
sp_help tablename
在输出中查找类似的内容:
Identity Seed Increment Not For Replication
----------- ------- ------------ ----------------------
userid 15500 1 0
调整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
作为@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'
Identity是用于加载到表中的第一行的值。
有一篇微软的文章可以提供关于身份的好知识:
https://learn.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql-identity-property?view=sql-服务器-2017
现在,有两种方法可以识别表中哪一列是标识列:
- 我们可以使用sql查询:selectcolumnproperty(object_id('mytable')、'mycolumn'、'sIdentity')
- sp_help表名