列がMSSQL 2000のID列であるかどうかを確認するにはどうすればよいですか?
-
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は、テーブルにロードされる最初の行に使用される値です。
アイデンティティに関する優れた知識を提供できるマイクロソフトの記事があります:
現在、テーブル内のID列である列を識別する方法はいくつかあります。
- SQLクエリを使用できます:select columnproperty(object_id( 'mytable')、 'mycolumn'、 'IsIdentity')
- sp_help tablename
所属していません StackOverflow