事务中多个SELECT语句中的计时问题

时间:2018-12-05 20:21:20

标签: mysql sql

我的问题是关于事务中SELECT查询的时间安排。我想知道多个SELECT语句是否将返回事务开始时的数据,或者它们是否将在执行查询时返回值。在后一种情况下,如果其他进程修改了某些表,这将是一个问题。这是一个示例,其中步骤由2个过程依次完成:

+------------------------------------------------------+--------------------------------+
|                      Process 1                       |           Process 2            |
+------------------------------------------------------+--------------------------------+
| query("START TRANSACTION");                          |                                |
| $res1 = query("SELECT foo1 FROM table1 FOR UPDATE"); |                                |
|                                                      | $res = query("UPDATE table2"); |
| $res2 = query("SELECT foo2 FROM table2 FOR UPDATE"); |                                |
| doSomeStuff($res1, $res2)                            |                                |
| query("COMMIT");                                     |                                |
+------------------------------------------------------+--------------------------------+

在示例中,函数doSomeStuff($res1, $res2)要求同时收集数据,以表示数据库的一致快照。是这样吗如果没有,防止这种情况发生的正确方法是什么?

0 个答案:

没有答案