代码之家  ›  专栏  ›  技术社区  ›  Rado

获取数据表列的下一个自动递增值?

  •  3
  • Rado  · 技术社区  · 17 年前

    7 回复  |  直到 17 年前
        1
  •  6
  •   hometoast    17 年前

    我找到了问题的解决方案(不是一个变通办法):

    要从SQLServer获取下一个自动增量值,请执行以下操作:

    SELECT IDENT_CURRENT('table_name'); -- This will fetch the present auto-increment value.
    

    因此,

    SELECT IDENT_CURRENT('table_name')+1; -- Next auto-increment value.
    

    如果从具有标识且键不连续的表中删除行,则不会中断。

    希望这能有所帮助。

        2
  •  7
  •   Yugal Jindle    14 年前

    如果它符合您的设计,您始终可以创建新行(datatable.newrow),并且它已经分配了nextId。现在它被浪费了,但在你之前,这行不会被提交到桌子上 AcceptChanges .

        3
  •  1
  •   Joe Doyle    17 年前

    您可以在DataTables的Select方法中使用MAX函数。

    DataRow row = dt.Select("MAX(id)")[0];
    int nextId = row["id"] + 1;
    

    MSDN有一个页面,其中包含您可以使用的所有表达式。 DataColumn..::.Expression Property

        4
  •  1
  •   Andrew Lewis    17 年前

        5
  •  0
  •   João Marcus    17 年前

    如果您正在使用SQL Server,您可以执行以下操作:

    SELECT cast(last_value as integer)+cast(increment_value as integer) 
    FROM sys.identity_columns 
    WHERE object_id=(SELECT id FROM sys.sysobjects WHERE name='PACLogErros')
    AND name='ERRCod'
    
        6
  •  0
  •   Rony    17 年前

    最好的方法是使用Andrew提到的@@IDENTITY,因为我们无法推断SQL计算下一个身份的算法,如果你考虑多个人更新数据库,当你试图将行保存到数据库时,你计算出的身份值将不一样

        7
  •  -2
  •   Progress Programmer    17 年前

    推荐文章