在调用外部服务之前使用update语句提交事务

时间:2018-05-17 07:28:43

标签: java sql-server tsql jdbc transactions

昨天我问了一个问题:Timeout on select query from external service after making an update on the same table但是我正在开始关于同样问题的新对话,因为我对它进行了更多的调查,现在事实证明它与我之前的想法有点不同。

enter image description here

这是我使用应用程序中的函数后来自数据库监控工具的图片。这三个绿色查询是从我的java应用程序启动的,它们是:

  1. 使用选择查询的程序
  2. 在MyTable上进行两次更新查询的程序
  3. 在MyTable上选择查询
  4. 然后调用外部服务,在MyTable(红色)上进行选择查询。此查询超时(因为它无法从MyTable读取)。我不知道为什么。我尝试使用更新查询来修改第二个过程,以便在调用外部服务之前提交这些更新。我试过了:

    1. 只在程序中添加更新查询

      CREATE PROCEDURE 
      ...
      AS
      BEGIN
          UPDATE
              ....
      
          UPDATE
              ....
      END
      
    2. 将更新查询放入事务并将其提交到此过程

    3. 但仅当我结束以下程序时:

       IF @@TRANCOUNT > 0 COMMIT TRAN
      
    4. 没有在此过程中启动事务我没有在(红色)选择查询上获得超时。但这似乎是一个糟糕的想法,提交交易,我不知道从哪里开始。

      任何想法我可以做些什么或如何调查这个问题?基本上我卡在这里,不知道下一步该做什么。

0 个答案:

没有答案