列がMSSQL 2000のID列であるかどうかを確認するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/188967

  •  06-07-2019
  •  | 
  •  

質問

ALT + F1ではなく、コードでこれを行いたい。

役に立ちましたか?

解決

次の方法でも実行できます。

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

IDの場合は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'

IDは、テーブルにロードされる最初の行に使用される値です。

アイデンティティに関する優れた知識を提供できるマイクロソフトの記事があります:

  

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql-identity-property?view=sql-server-2017

現在、テーブル内のID列である列を識別する方法はいくつかあります。

  • SQLクエリを使用できます:select columnproperty(object_id( 'mytable')、 'mycolumn'、 'IsIdentity')
  • sp_help tablename
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top