SQL Server: как получить статус AUTO_INCREMENT

1

Если у меня есть столбец с AUTO_INCREMENT в таблице person которая начиналась с 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

если люди застряли с такой же ситуацией,

здесь мой последний код

в С#

    //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]);
Теги:
sql-server

3 ответа

2
Лучший ответ

Для вашего редактирования, чтобы проверить, является ли столбец auto_increment (identity); вы можете обратиться к этому вопросу

edit: проверить начальное значение; вы можете использовать:

IDENT_SEED ( 'table_or_view' )

см. также: IDENT_SEED

для проверки приращения вы можете использовать:

IDENT_INCR ( 'table_or_view' )

см. также: IDENT_INCR

  • 0
    Ты, что ответь на мой второй вопрос, как я могу проверить, если это увеличение или нет
  • 0
    Я отредактировал свой ответ, включив в него информацию о том, как проверить начальное значение и приращение для вашей таблицы.
Показать ещё 3 комментария
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
  • 0
    я действительно не знаю, если это 2 2, например, я просто хочу сделать Quary, которые получают статус столбца (то есть auto_increment) "Семя" и "приращение"
  • 0
    @AsafShazar Я обновил ответ, чтобы получить все необходимые поля
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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню