powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Identity + concurrency
16 сообщений из 16, страница 1 из 1
Identity + concurrency
    #39870732
_human
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Некая процерура делает инсерт в таблицу с identity
Все это в явной транзакции

Я хочу отловить identity в контексте concurrency

begin tran
exec usp_tableA_Insert

select ident_current('dbo.A')

end tran
...
Рейтинг: 0 / 0
Identity + concurrency
    #39870737
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scope_identity()
...
Рейтинг: 0 / 0
Identity + concurrency
    #39870738
_human
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

Пробовал,
К сожалению нет
...
Рейтинг: 0 / 0
Identity + concurrency
    #39870742
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_humanК сожалению нетЧто именно "нет"?
...
Рейтинг: 0 / 0
Identity + concurrency
    #39870771
_human
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm

авторTherefore, if two statements are in the same stored procedure, function, or batch, they are in the same scope.
https://docs.microsoft.com/en-us/sql/t-sql/functions/scope-identity-transact-sql?view=sql-server-2017
...
Рейтинг: 0 / 0
Identity + concurrency
    #39870777
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отлавливать надо в процедуре. В противном случае не решается в многопользовательской среде без сериализации вставки данных в таблице.
...
Рейтинг: 0 / 0
Identity + concurrency
    #39870781
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_human,

Что вы хотите сказать этой цитатой?
...
Рейтинг: 0 / 0
Identity + concurrency
    #39870806
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

Он намекает, что ему scope_identity не подходит, потому что он пытается получить сгенерированное значение identity за скоупом.
...
Рейтинг: 0 / 0
Identity + concurrency
    #39870814
_human
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, именно это имелось ввиду
Сейчас нет возможности написать нормальный семпл
но scope_identity() возвращает NULL
Идея поместить вызов процедуры в.явную транзакцию как я понимаю несработает
...
Рейтинг: 0 / 0
Identity + concurrency
    #39870824
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_human,

Понятно.
Самое простое - в процедуре записывать scope_identity во временную таблицу уровня сессии.
Один из минусов - для каждой сессии будет свой план выполнения этой процедуры.
...
Рейтинг: 0 / 0
Identity + concurrency
    #39870851
_human
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, ещё такой вопрос
Человек вставляет в таблицу и ловит в @@identity
Какова вероятность что вернет не его identity?
...
Рейтинг: 0 / 0
Identity + concurrency
    #39870861
Gerros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_humanКакова вероятность что вернет не его identity?@@identity чужого не возвращает. Просто не всем подходит айдишник от вставки, сделанной триггером...

если есть возможность изменить хранимку, добавьте в неё
Код: sql
1.
return scope_identity()

и забирайте его сами
Код: sql
1.
exec @id = usp_tableA_Insert
...
Рейтинг: 0 / 0
Identity + concurrency
    #39870862
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_humanЧеловек вставляет в таблицу и ловит в @@identity
Какова вероятность что вернет не его identity?Если подразумевается, что "не его" - это значение из другого сеанса, то нулевая.
Иначе, 100%, если у таблицы есть триггер, в котором тоже есть вставка в другую таблицу с identity.
...
Рейтинг: 0 / 0
Identity + concurrency
    #39870869
_human
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gerrosесли есть возможность изменить хранимку, добавьте в неё
такого нет

invmЕсли подразумевается, что "не его" - это значение из другого сеанса
в теории может быть что апликация в 1-й сессии(@@spid) выполнит 500 процедур асинхронно
так что какой-то из @@identity вернет "чужой" ?
...
Рейтинг: 0 / 0
Identity + concurrency
    #39870873
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_humanтак что какой-то из @@identity вернет "чужой" ?Нет
...
Рейтинг: 0 / 0
Identity + concurrency
    #39870880
Gerros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_humanапликация в 1-й сессии(@@spid) выполнит 500 процедур асинхронно ...SQL Server обслуживает команды внутри сессии синхронно. Прожевал - выплюнул. Прожевал - выплюнул. Романтика...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Identity + concurrency
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]