INFORMATION_SCHEMA.COLUMNSを使用して列がID列であるかどうかを判断する
MSSQL 2000で列がID列であるかどうかを判断するには、いくつかの方法があります。
方法1:sys.columnsを使用する
sys.columns
システムテーブルを使用して、列の IDENTITY
プロパティを確認できます。
SELECT
c.name AS 列名,
c.is_identity AS ID列
FROM
sys.columns c
WHERE
c.object_id = OBJECT_ID('テーブル名')
このクエリは、指定されたテーブルのすべての列の名前と is_identity
フラグを返します。is_identity
フラグが 1 の場合、列はID列です。
INFORMATION_SCHEMA.COLUMNS
ビューを使用して、列の IDENTITY_GENERATION
プロパティを確認できます。
SELECT
c.COLUMN_NAME AS 列名,
c.IDENTITY_GENERATION AS ID生成
FROM
INFORMATION_SCHEMA.COLUMNS c
WHERE
c.TABLE_NAME = 'テーブル名'
このクエリは、指定されたテーブルのすべての列の名前と IDENTITY_GENERATION
プロパティを返します。IDENTITY_GENERATION
プロパティが ALWAYS
または BY_DEFAULT
の場合、列はID列です。
方法3:sp_helpを使用する
sp_help
システムプロシージャを使用して、列に関する情報を取得できます。
EXEC sp_help 'テーブル名'
このプロシージャは、指定されたテーブルに関する情報を表示します。出力には、列の名前、データ型、および IDENTITY
プロパティが含まれます。IDENTITY
プロパティが YES
の場合、列はID列です。
補足
- ID列は、テーブル内に一意の値を格納するために使用されます。
- ID列は、通常、主キーとして使用されます。
- MSSQL 2000では、ID列は整数型のみです。
-- 方法1:sys.columnsを使用する
SELECT
c.name AS 列名,
c.is_identity AS ID列
FROM
sys.columns c
WHERE
c.object_id = OBJECT_ID('テーブル名')
-- 方法2:INFORMATION_SCHEMA.COLUMNSを使用する
SELECT
c.COLUMN_NAME AS 列名,
c.IDENTITY_GENERATION AS ID生成
FROM
INFORMATION_SCHEMA.COLUMNS c
WHERE
c.TABLE_NAME = 'テーブル名'
-- 方法3:sp_helpを使用する
EXEC sp_help 'テーブル名'
-- テーブル 'Customers' の列 'CustomerID' がID列かどうかを確認する
-- 方法1
SELECT
c.name AS 列名,
c.is_identity AS ID列
FROM
sys.columns c
WHERE
c.object_id = OBJECT_ID('Customers')
-- 方法2
SELECT
c.COLUMN_NAME AS 列名,
c.IDENTITY_GENERATION AS ID生成
FROM
INFORMATION_SCHEMA.COLUMNS c
WHERE
c.TABLE_NAME = 'Customers'
-- 方法3
EXEC sp_help 'Customers'
これらのクエリを実行すると、列 'CustomerID' がID列であることが確認できます。
方法4:SSMSを使用する
SQL Server Management Studio (SSMS) を使用して、列のプロパティを確認できます。
- SSMSでデータベースに接続します。
- テーブルを展開します。
- 列を右クリックして、プロパティを選択します。
- 詳細設定ページで、IDプロパティを確認します。
方法5:T-SQLコードを使用する
T-SQLコードを使用して、列の IDENTITY
プロパティを取得できます。
DECLARE @colName VARCHAR(128)
DECLARE @isIdentity BIT
SET @colName = '列名'
SELECT
@isIdentity = c.is_identity
FROM
sys.columns c
WHERE
c.object_id = OBJECT_ID('テーブル名')
AND c.name = @colName
IF @isIdentity = 1
PRINT '列 ' + @colName + ' はID列です'
ELSE
PRINT '列 ' + @colName + ' はID列ではありません'
このコードは、指定された列がID列かどうかを判断し、結果を出力します。
sql-server t-sql metadata