如何识别表是否有标识列

Shi*_*iny 29 sql sql-server sql-server-ce

我想知道表是否有标识列.表格不为我所知.我还没有完成表格的结构.使用查询?

我正在使用Sql Server Compact Edition.

Pra*_*ana 21

这是返回标识列名称的查询;

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
Run Code Online (Sandbox Code Playgroud)

然后形成代码方面.

使用datareader角色调用此存储过程,然后检查datareader.hasrows().如果条件值为true(1),则表具有标识列(如果已设置).如果没有,那么它没有标识列.


Wah*_*tar 14

我知道很久以前但我觉得这很有帮助

试试这个 :

IF EXISTS (SELECT * from syscolumns where id = Object_ID(@TABLE_NAME) and colstat & 1 = 1)
BEGIN
   -- Do your things
END
Run Code Online (Sandbox Code Playgroud)


小智 9

以下任何查询都可用于检查表中是否存在标识列

1)

SELECT *
FROM sys.identity_columns
WHERE OBJECT_NAME(object_id) = 'TableName'
Run Code Online (Sandbox Code Playgroud)

2)

SELECT *
FROM sys.identity_columns
WHERE object_id = (
        SELECT id
        FROM sysobjects
        WHERE name = 'TableName'
    )
Run Code Online (Sandbox Code Playgroud)


小智 9

IF (OBJECTPROPERTY(OBJECT_ID('TABLE_NAME'), 'TableHasIdentity') = 1) 
Run Code Online (Sandbox Code Playgroud)

ObjectProperty可以从sql server 2008开始参考: OBJECTPROPERTY


joh*_*mcp 5

我只想添加这个选项,因为我认为它是最简单的

SELECT COLUMNPROPERTY(OBJECT_ID('TableName'),'ColumnName','isidentity')
Run Code Online (Sandbox Code Playgroud)