Проблема тупика в запросе пакета / обновления для одновременного доступа - PullRequest
0 голосов
/ 03 октября 2018

Я использую пакет Oracle для одного из отчетов в нашем проекте.Когда к этому пакету обращаются одновременно, запрос ниже вызывает взаимоблокировку.Пожалуйста, предложите в любом случае улучшить этот запрос:

 UPDATE temp_final t 
 SET notnullcol = ( select COALESCE(h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13,h14,h15,h16,h17,h18,h19,h20,h21,h22,h23,h23 ) 
                    from temp_final
    where (      ( rowgroup    = 'G'           and mid    = t.seid)
    or  ( rgroup    = 'K'      and  t.rgroup = rgroup  and t.mid = mid )
    or  ( rgroup    = 'G'      and  t.rgroup = rgroup and  t.mid = mid )
    )
    and rid    = t.rid
    and rtype  = t.rtype
    and sid    = t.sid
    and pid = t.pid AND rid = 9 AND rtype =1 AND sid = 'value' AND pid =  421 ) 

--5,034 rows updated.

Обратите внимание, что temp_final - это временная таблица, и все столбцы h * используются в вычислениях, поэтому схема этой таблицы не может быть использована.

...