插入新行并根据当前最后一行生成新ID

时间:2018-02-09 15:58:16

标签: sql asp.net vb.net webforms

我的表的主键是ID的Identity列。我希望能够插入一个新行并让它知道当前表中的最后一个ID是什么,并添加一个。我知道我可以使用Scope Identity从我的代码中获取最后一个插入的列,但我担心人们会在数据库中手动添加条目,因为他们经常这样做。有没有办法可以查看表中的最后一个ID,而不仅仅是我的代码插入的最后一个ID?

3 个答案:

答案 0 :(得分:2)

使用SQL Identity column,您无需执行任何特殊操作。这是默认行为。无论插入来自何处,SQL Server都将处理以确保您没有冲突。

@@Identity将提取最新的身份,scope_identity将从当前范围获取身份。

  

范围是一个模块:存储过程,触发器,函数或批处理。因此,如果两个语句在同一存储过程,函数或批处理中,则它们在同一范围内。

答案 1 :(得分:0)

如果您不想允许手动输入主列,则可以添加Identity约束以及primary key约束。

示例,在创建表时,

CREATE Table t_Temp(RowID Int Primary Key Identity(1,1), Name Varchar(50))

INSERT Into t_Temp values ('UserName')
INSERT Into t_Temp values ('UserName1')

SELECT * from t_Temp

enter image description here

答案 2 :(得分:0)

您可以查询表并在一个SQL查询中获取下一个可用代码:

SELECT COALESCE(MAX(CAST("RowID" AS INT)),0) +1 as 'NextRowID' from <tableName>

&#34; 0&#34;这是一个默认值,意味着如果没有找到行,返回的第一个代码将是(0 + 1)= 1

通常我有999而不是0,因为我喜欢我的RowID /主键等,从1000开始。