2008-10-09 107 views
21

我想在代碼中執行此操作,而不是使用ALT + F1。如何確定列是否是MSSQL 2000中的標識列?

+0

參見[如何識別表是否具有標識列(http://stackoverflow.com/q/2871701)和[如何確定哪些SQL表以編程方式具有標識列](http://stackoverflow.com/q/87747) – 2016-06-10 08:49:27

回答

53

你也可以這樣來做:

select columnproperty(object_id('mytable'),'mycolumn','IsIdentity') 

返回1如果它是一個ident如果不是,則爲0。

15
sp_help tablename 

在輸出看這樣的事情:

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

調整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 
0

上@擴張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'