Здравствуйте, ksg71, Вы писали:
K>Здравствуйте, alexey.kostylev, Вы писали:
AK>>Здравствуйте, ksg71, Вы писали:
K>>>Здравствуйте, alexey.kostylev, Вы писали:
AK>>>>на мой взгляд TABLOCK тут лишний. все должно лочиться BEGIN TRAN, не говоря уж о том что можно залочить используя вложенный селект на инсерте
K>>>не TABLOCK а TABLOCKX, и далеко не лишний, важно не разрешить никому читать до записи результата
AK>>ну так эклюзивная транзакция на входе отсечет всех. Тем более что update and insert будут выполнятся как атомарная операция, тогда уж вешать блокировку на update. Если предполагать что будет лочится только селект, это не спасет ситуацию, поскольку после окончания первого селекта один процесс уйдет на апдейт, а другой встанет на селект и не селект этот пойдет скорее всего перед апдейтом.
K>select по умолчанию использует shared блокировку
ну так он идет в контексте апдейта. я думаю что весь запрос будет идти по одной максимальной блокировке от апдейта. Это для случая когда select будет вложенным запросом в апдейт