SQL Server:我如何获得AUTO_INCREMENT状态

时间:2014-08-22 09:53:55

标签: c# sql sql-server

如果我在person表中的AUTO_INCREMENT列中以1开头并递增2 现在我在该表中添加一行

我有

ID|Fname|Lname
---------------
1 |check|check2
3 |check3|check4

如何在SQL查询中获取增量的状态我的意思是我想在SQL中获取现在的值和增量

在该示例中,我想从查询中获取:

select 
    increment_value, increment_by 
from 
    INFORMATION_SCHEMA.COLUMNS/sys.columns 
where 
    tablename= 'Person'

我想得到的结果是3,2

如果人们遇到同样的情况,那么

这是我的最后一个代码

在c#

    //check columns is auto incresment if yes = True or or not =False
string sql1 = string.Format("SELECT is_identity FROM sys.columns WHERE object_id = object_id('{0}') AND name = '{1}'","tablename","ColumnName");
string str = DoQueryWithReturn("db.mdf", sql1);
MessageBox.Show(str[0]);


//get the ident increment Seed = start value , INCR= how many it up , Current it what number right now, last row
sql1 = string.Format(" SELECT IDENT_SEED('{0}'),IDENT_INCR ('{0}'),IDENT_CURRENT('{0}') AS Identity_Seed ", "tablename");
str = DoQueryWithReturn("db.mdf", sql1);
if(str[0].Length!=0)
MessageBox.Show(str[0]+","+str[1]+","+str[2]);

3 个答案:

答案 0 :(得分:2)

用于编辑以检查列是否为auto_increment(identity);你可以参考this question

编辑:检查种子值;你可以使用:

IDENT_SEED ( 'table_or_view' )

另见:IDENT_SEED

要检查增量,可以使用:

IDENT_INCR ( 'table_or_view' )

另见:IDENT_INCR

答案 1 :(得分:1)

要获得所需的结果,请尝试

DECLARE @table varchar(50) = 'Person'

SELECT is_identity, IDENT_SEED(@table) AS Seed,
IDENT_INCR(@table) AS Increment,
IDENT_CURRENT(@table) AS Current_Identity
FROM sys.columns
WHERE 
    object_id = object_id(@table)
    AND name = 'Id' -- column name

答案 2 :(得分:0)

您可以使用以下语句检查列是否为IDENTITY列:

SELECT     
    name,
    is_identity
FROM 
    sys.columns 
WHERE 
    OBJECT_ID = OBJECT_ID('dbo.YourTableNameHere')
    AND name = 'ColumnNameHere'

要查找种子值,增量和最后使用的值,请使用以下语句:

SELECT 
    ColumnName = name,
    TableName = OBJECT_NAME(object_id),
    seed_value ,
    increment_value ,
    last_value 
FROM 
    sys.identity_columns