テーブルにID列があるかどうかを確認したい。テーブルは私には不明です。テーブルの構成はまだ行っていません。クエリを使用しますか?
SQL Server Compact Editionを使用しています。
これは、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列がありません。
私はそれがずっと前だと知っていますが、これは役に立ちました
これを試して :
IF EXISTS (SELECT * from syscolumns where id = Object_ID(@TABLE_NAME) and colstat & 1 = 1)
BEGIN
-- Do your things
END
IF (OBJECTPROPERTY(OBJECT_ID('TABLE_NAME'), 'TableHasIdentity') = 1)
ObjectProperty
はSQL Server 2008リファレンスから利用できます: [〜#〜] objectproperty [〜#〜]
以下のクエリのいずれかを使用して、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'
)
このオプションを追加したいだけでなく、最も簡単だと思います
SELECT COLUMNPROPERTY(OBJECT_ID('TableName'),'ColumnName','isidentity')
これを行う1つの方法は、ストアドプロシージャsp_help
を利用することです。つまり:
sp_help MyTable
これにより、テーブルに必要なすべての情報を含むDataSetが返されます。アイデンティティに関する情報を持つ特定のテーブルがあります。
つまり:
IDフィールドが含まれていない場合、ID列には「ID列が定義されていません」と表示されます。
@Pranay:彼はコンパクト版を言った。ストアドプロシージャはサポートされておらず、sys.anythingはありません。
これは呼び出しです:
SELECT Count(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE AUTOINC_INCREMENT IS NOT NULL AND TABLE_NAME='this_table'
1(true)または0(false)を返します。
これは、選択したデータベース内のすべてのテーブル名、テーブルの列名、および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
... declare @tblhasIdentCol bit = IIF(IDENT_CURRENT(@dbName + '。' + @schemaName + '。' + @tableName)IS NOT NULL、1、0)
テーブルにIDがある場合、YuuはNULLまたは数値を取得します
CREATE FUNCTION dbo.fnTableHasIdentity(@Tbl sysname)
RETURNS TINYINT
BEGIN
RETURN OBJECTPROPERTY(OBJECT_ID(@Tbl), 'TableHasIdentity')
END
-そのように単純です!
これを使用して、現在のテーブルにID列がある場合、1または0 Booleanフォームを取得できます
SELECT Count(Column_ID) FROM sys.identity_columns WHERE OBJECT_NAME(object_id) = 'tableName'