Блокировка, полученная с помощью select for update, выпущена после завершения хранимой процедуры, даже если она вложена в другой SP?

Я использую SAP HANA DB SP8. Как обрабатываются блокировки при вложении хранимых процедур?

Более конкретно: у меня есть один SP с именем p_outer, который вызывает другой SP с именем p_inner. p_inner блокирует одну строку таблицы T через select ... for update. После того, как p_inner вернется к p_outer, будет ли строка в T по-прежнему заблокирована? В p_inner нет явного оператора фиксации. Параметр автоматической фиксации сервера, вероятно, имеет значение false, но имеет ли это значение?

Я не обнаружил, что эта конкретная проблема задокументирована, и я не нашел и предыдущих материалов по этому поводу специально для SAP HANA. Другие DBM могут справиться с этим иначе.


person Martin    schedule 23.10.2014    source источник
comment
Удалось ли вам проверить это на своей установке?   -  person stb    schedule 27.10.2014
comment
@stb Нет, к сожалению, нет. Я думаю, будет ли установка более утомительной, чем попытки найти исходный код или автора кода.   -  person Martin    schedule 27.10.2014


Ответы (1)


Я ответил на вопрос в вашем перекрестном сообщении здесь: http://www.saphana.com/message/13458#13458

Для удобства здесь контент скопирован по ссылке:

Блокировки обрабатываются в контексте транзакции, а не команд.

Следовательно, даже если у вас установлено значение autocommit (что является параметром уровня сеанса), тогда вызов процедуры выполняется (включая все другие процедуры, которые вызываются между ними), и только после этого транзакция завершается (либо через ROLLBACK, либо через COMMIT. )

При этом все замки будут сняты.

Итак, да, строки, которые блокируются во «внутренних» вызовах, по-прежнему будут заблокированы во «внешнем» вызове.

Однако, поскольку это всего лишь одна транзакция, «внешний» вызов, конечно, может получить доступ к записям, заблокированным «внутренним» вызовом.

person Lars Br.    schedule 28.10.2014
comment
Кажется, я не могу найти документацию для FOR UPDATE в справочнике по SQLScript. Где это задокументировано, если не там? - person Ant_222; 26.06.2018
comment
Спасибо. Но утверждает ли HANA, что SQLScript является строгим надмножеством SQL? А какой SQL - SQL-92? Я не делал заявления об этом в Справочнике по SQLScript ... - person Ant_222; 26.06.2018
comment
Так какой здесь смысл? Вы не нашли документацию там, где, как вы думали, она должна быть? Для этого есть функции поиска как в Интернете, так и в студии HANA. - person Lars Br.; 26.06.2018
comment
Теперь я вижу, что это задокументировано в справочнике по SAP HANA SQL и системным представлениям. Я был бы признателен, если бы вы это написали. - person Ant_222; 26.06.2018
comment
Есть два документа с одинаковыми названиями, которые содержат слова SQL и REFERENCE. Один из них вы уже исключили, а я указал вам на другого. Я ничего не могу поделать, если это все еще слишком сложно для вас найти, даже если оба документа находятся буквально на одной и той же веб-странице / встроены в инструмент. Споры о соблюдении стандартов SQL здесь тоже не помогают. - person Lars Br.; 26.06.2018
comment
Я думал, вы имели в виду SQL в целом, например стандарт SQL-92. - person Ant_222; 29.06.2018