要在插入命令后获取表中当前的增量值
在谷歌搜索后,我发现一个函数为INDENT_INCR('<table_name>')
,因此我尝试了此函数。
CREATE procedure [dbo].[usp_Insert]
@flag char(3)=null,
@udise varchar(11)=null,
@mgmt_certificate image=null
as
BEGIN
declare @sm_incremented_id int=null
if(@flag='IIA') --Insert new UDISE into all tables
begin
insert into school_master(udise_no) values(@udise) /* SCHOOL MASTER */
set @sm_incremented_id=IDENT_INCR('school_master')
insert into documents_attached(schoolid,udise_no,Order_Copy_Fresh_Mgmt) values(@sm_incremented_id,@udise,@mgmt_certificate) /* DOCUMENTS */
end
END
在表中有4条记录,其ID为1,2,3,4。我已经删除了2,3,4。然后插入新记录,id为5。但是此函数始终返回1。为什么?
答案 0 :(得分:2)
如果您要寻找下一个值,则可以使用 IDENT_CURRENT()
和 IDENT_INCR
函数作为
SELECT IDENT_CURRENT('SchemaName.TableName') + IDENT_INCR('SchemaName.TableName')
如果您正在寻找插入到身份列中的最后一个身份值,则可以使用 SCOPE_IDENTITY()
作为
SELECT SCOPE_IDENTITY()
请注意,SCOPE_IDENTITY()
将返回插入到同一范围的 内的Identity列中的最后一个身份值。