sql help 2 вставки в одну процедуру - PullRequest
0 голосов
/ 28 сентября 2010

Спасибо всем за отзыв

Привет всем,

Я пытаюсь создать хранимую процедуру, которая выполняет две вставки в две разные таблицы.*

DECLARE @New_Group1_Id
DECLARE @New_Group2_Id

INSERT INTO Group1
                      (Group1_Desc)
VALUES     (N'Indianapolis')

SELECT @New_Group1_Id = Scope_Identity()


INSERT INTO Group2
                      (Group2_Desc)
VALUES     (N'Indianapolis')

SELECT @New_Group2_Id = Scope_Identity()

Результаты показывают 1 и 2 для идентификаторов вместо 1 и 1 (если это были первые записи, когда-либо вставленные в таблицу)

Есть ли способ получить значения IDENTITYдля каждого оператора вставки?Я пытался использовать Scope_Identity (), но результаты Спасибо,

1 Ответ

3 голосов
/ 28 сентября 2010

вы, вероятно, удалили строки в одной из таблиц, вместо этого обрежьте таблицу (что приведет к сбросу идентификатора) и повторите попытку или заново заполните таблицу DBCC CHECKIDENT (Group1, RESEED, 0);

здесь запустите это, чтобы убедиться, что оно работает как положено

Create table Group1(id int identity,Group1_Desc nvarchar(100)) 
create table Group2(id int identity,Group2_Desc nvarchar(100)) 

DECLARE @New_Group1_Id int
DECLARE @New_Group2_Id int

INSERT INTO Group1(Group1_Desc)
VALUES     (N'Indianapolis')

SELECT @New_Group1_Id = Scope_Identity()


INSERT INTO Group2 (Group2_Desc)
VALUES     (N'Indianapolis')

SELECT @New_Group2_Id = Scope_Identity()

select @New_Group1_Id,@New_Group2_Id

Теперь сделайте это

delete Group1

теперь запустить снова

DECLARE @New_Group1_Id int
DECLARE @New_Group2_Id int

INSERT INTO Group1(Group1_Desc)
VALUES     (N'Indianapolis')

SELECT @New_Group1_Id = Scope_Identity()


INSERT INTO Group2 (Group2_Desc)
VALUES     (N'Indianapolis')

SELECT @New_Group2_Id = Scope_Identity()

select @New_Group1_Id,@New_Group2_Id

и вы увидите, что оба 2

теперь усекаем таблицу group1

truncate table Group1

запустите это снова, и вы получите 1 и 3

DECLARE @New_Group1_Id int
DECLARE @New_Group2_Id int

INSERT INTO Group1(Group1_Desc)
VALUES     (N'Indianapolis')

SELECT @New_Group1_Id = Scope_Identity()


INSERT INTO Group2 (Group2_Desc)
VALUES     (N'Indianapolis')

SELECT @New_Group2_Id = Scope_Identity()

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