В том же духе к моему previous question Я снова спрашиваю этих парней за вашу коллективную мудрость и помощь.Верните идентификатор только что добавленного ряда
В хранимой процедуре и после прохождения некоторых проверок мне нужно вставить новую строку и вернуть для нее вновь созданный идентификатор. Проверка того, существует ли строка, работает так, что это бит после этого, который я еще не определил.
Таблица имеет две важные колонки: LocationID и CaseID. CaseID является автоинкрементным, поэтому, когда вы добавляете вставку нового locationid, он автоматически отменяется.
настоящее время у меня это:
-- previous checks for existance of CaseID
IF @CaseID IS NULL
BEGIN
INSERT INTO
Cases(LocationID)
VALUES
(@LocationID)
-- what now?
END
Я думал о выполнении @CaseID = (SELECT blah)
заявление immeadiately после, но мне было интересно, если есть способ лучше?
Есть ли лучший способ? Как бы вы это сделали?
использовать SET @id = SCOPE_IDENTITY() и забыть о @@ IDENTITY. если у вас есть триггеры в таблице, которые генерируют значения идентификаторов, @@ IDENTITY вернет это значение идентификации, а не оригинальное удостоверение INSERT, но SCOPE_IDENTITY() вернет правильную идентификацию в текущей области. –