Если у меня есть столбец с 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]);
Для вашего редактирования, чтобы проверить, является ли столбец auto_increment (identity); вы можете обратиться к этому вопросу
edit: проверить начальное значение; вы можете использовать:
IDENT_SEED ( 'table_or_view' )
см. также: IDENT_SEED
для проверки приращения вы можете использовать:
IDENT_INCR ( 'table_or_view' )
см. также: IDENT_INCR
Чтобы получить требуемый результат, попробуйте,
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
Вы можете проверить, является ли столбец столбцом 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