Как вернуть текущее увеличенное значение в таблицу через STORED PROCEDURE после команды INSERT - PullRequest
0 голосов
/ 07 июня 2019

Чтобы получить текущее увеличенное значение в таблице после команды вставки

После поиска в Google я нашел одну функцию как 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 записи с идентификаторами 1,2,3,4.Я удалил 2,3,4.Затем вставляется новая запись и идентификатор равен 5. Но эта функция возвращает мне 1 всегда.Почему?

1 Ответ

2 голосов
/ 07 июня 2019

Если вы ищете, каким будет следующее значение, вы можете использовать функции IDENT_CURRENT() и IDENT_INCR в

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

Если вы ищете последнее значение идентификатора, вставленное в столбец идентификаторов, вы можете использовать SCOPE_IDENTITY() как

SELECT SCOPE_IDENTITY()

Обратите внимание, что SCOPE_IDENTITY() возвращает последнее значение идентификатора, вставленное в столбец идентификаторов в той же области действия .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...