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