Spring - вызов двух хранимых процедур в транзакции, но запуск каждой процедуры в режиме автоматической фиксации - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть две сторонние хранимые процедуры, которые я вызываю в транзакции Spring следующим образом:

    @Transactional
    public void testGetHoldings() throws SQLException {
       // calls stored procedure get_session           
       myRepo.getSession(login.getUser(), login.getPassword());

       // calls stored procedure get_data
       myRepo.getData("aDataId");       
    }

Требуется транзакция b / c первая хранимая процедура генерирует ключ сеанса. Ключ сеанса может использоваться только другим вызовом sp (таким как get_data) в той же транзакции. Кроме того, каждый оператор в хранимой процедуре get_data должен быть зафиксирован после выполнения. Например,

ALTER procedure [dbo].[get_data]
      @aDataId varchar(max)
as
begin
  -- just an example insert. actual sp has a lot of code and several inserts that
  -- must be committed immediately upon execution
   insert into tbl (col1) values ("col1")
end

Однако @Transactional заставляет каждую вставку ждать, пока sp завершится, прежде чем будет зафиксирован.

Как я могу иметь две хранимые процедуры в одной транзакции, но разрешить фиксацию операторов в хранимых процедурах при выполнении оператора (т.е. автоматическое принятие)? Сторонние SP находятся на SQL сервере.

...