web-dev-qa-db-ja.com

テーブルにID列があるかどうかを識別する方法

テーブルにID列があるかどうかを確認したい。テーブルは私には不明です。テーブルの構成はまだ行っていません。クエリを使用しますか?

SQL Server Compact Editionを使用しています。

31
Shiny

これは、ID列名を返すクエリです。

_create procedure GetIdentity 
@tablename varchar(50)
begin
    SELECT   OBJECT_NAME(OBJECT_ID) AS TABLENAME, 
             NAME AS COLUMNNAME, 
             SEED_VALUE, 
             INCREMENT_VALUE, 
             LAST_VALUE, 
             IS_NOT_FOR_REPLICATION 
    FROM     SYS.IDENTITY_COLUMNS 
    WHERE OBJECT_NAME(OBJECT_ID) = @tablename
end
_

次に、コード側を形成します。

Datareaderロールを使用してこのストアドプロシージャを呼び出し、次にdatareader.hasrows()を確認します。条件値がtrue(_1_)の場合、設定されていれば、テーブルにID列があります。そうでない場合は、ID列がありません。

20
Pranay Rana

私はそれがずっと前だと知っていますが、これは役に立ちました

これを試して :

IF EXISTS (SELECT * from syscolumns where id = Object_ID(@TABLE_NAME) and colstat & 1 = 1)
BEGIN
   -- Do your things
END
13
Wahid Bitar
IF (OBJECTPROPERTY(OBJECT_ID('TABLE_NAME'), 'TableHasIdentity') = 1) 

ObjectPropertyはSQL Server 2008リファレンスから利用できます: [〜#〜] objectproperty [〜#〜]

9
h3n

以下のクエリのいずれかを使用して、ID列がテーブルに存在するかどうかを確認できます

1)

SELECT *
FROM sys.identity_columns
WHERE OBJECT_NAME(object_id) = 'TableName'

2)

SELECT *
FROM sys.identity_columns
WHERE object_id = (
        SELECT id
        FROM sysobjects
        WHERE name = 'TableName'
    )
8
Bhavneet

このオプションを追加したいだけでなく、最も簡単だと思います

SELECT COLUMNPROPERTY(OBJECT_ID('TableName'),'ColumnName','isidentity')
4
johnmcp

これを行う1つの方法は、ストアドプロシージャsp_helpを利用することです。つまり:

sp_help MyTable

これにより、テーブルに必要なすべての情報を含むDataSetが返されます。アイデンティティに関する情報を持つ特定のテーブルがあります。

つまり:

IDフィールドが含まれていない場合、ID列には「ID列が定義されていません」と表示されます。

3
Kyle Rozendo

@Pranay:彼はコンパクト版を言った。ストアドプロシージャはサポートされておらず、sys.anythingはありません。

これは呼び出しです:

SELECT Count(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE AUTOINC_INCREMENT IS NOT NULL AND TABLE_NAME='this_table'

1(true)または0(false)を返します。

2
Patrick

これは、選択したデータベース内のすべてのテーブル名、テーブルの列名、およびis_identityを取得するクエリです。

SELECT
     sys.columns.name
   , sys.tables.name
   , is_identity
FROM sys.columns
INNER JOIN sys.tables ON sys.tables.object_id = sys.columns.object_id
    AND sys.columns.is_identity = 1
1
Aravind Goud

... declare @tblhasIdentCol bit = IIF(IDENT_CURRENT(@dbName + '。' + @schemaName + '。' + @tableName)IS NOT NULL、1、0)

テーブルにIDがある場合、YuuはNULLまたは数値を取得します

0
johnj1234
CREATE FUNCTION dbo.fnTableHasIdentity(@Tbl sysname)
RETURNS TINYINT
BEGIN 
  RETURN OBJECTPROPERTY(OBJECT_ID(@Tbl), 'TableHasIdentity')
END 

-そのように単純です!

0
user3415785

これを使用して、現在のテーブルにID列がある場合、1または0 Booleanフォームを取得できます

SELECT Count(Column_ID) FROM sys.identity_columns WHERE OBJECT_NAME(object_id) = 'tableName'