INSERT命令后如何通过STORED PROCEDURE返回表中的当前增量值

时间:2019-06-07 09:14:34

标签: sql sql-server tsql

要在插入命令后获取表中当前的增量值

在谷歌搜索后,我发现一个函数为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。为什么?

1 个答案:

答案 0 :(得分:2)

如果您要寻找下一个值,则可以使用 IDENT_CURRENT() IDENT_INCR 函数作为

SELECT IDENT_CURRENT('SchemaName.TableName') + IDENT_INCR('SchemaName.TableName')

如果您正在寻找插入到身份列中的最后一个身份值,则可以使用 SCOPE_IDENTITY() 作为

SELECT SCOPE_IDENTITY()

请注意,SCOPE_IDENTITY()将返回插入到同一范围的 内的Identity列中的最后一个身份值。