Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么在两个相同的查询之间得到相同的结果?_Java_Mysql - Fatal编程技术网

Java 为什么在两个相同的查询之间得到相同的结果?

Java 为什么在两个相同的查询之间得到相同的结果?,java,mysql,Java,Mysql,我正在从事一个JSF项目。我们基于MySql 5.1、JBoss 4.22GA的开发,今天遇到了一些麻烦,希望有人能帮我解决 情况是这样的:出于某些原因,我必须对一个表进行一些更新,然后看看是否可以找到这些更改 create table `table` ( id int, update_date datetime, ); // consider this method as one transaction somemethod() { A. select max(up

我正在从事一个JSF项目。我们基于MySql 5.1、JBoss 4.22GA的开发,今天遇到了一些麻烦,希望有人能帮我解决

情况是这样的:出于某些原因,我必须对一个表进行一些更新,然后看看是否可以找到这些更改

create table `table` (
    id int,
    update_date datetime,
);

// consider this method as one transaction
somemethod() {

    A. select max(update_date) from table where id = 1;

    B. update table set update_date = now() where id = 1;

    C. select max(update_date) from table where id = 1;
}
请注意:

1.we break after A (you know using break point in eclipse)

2.we execute B from somewhere outside application (which means execute update in something like GUI DB manager)

3.after B we proceed to execute C (same we did as A)

我们得到了和A相同的结果,但是我们可以在GUI数据库管理器中确认这一变化。有人能告诉我为什么会这样吗?我将非常感谢您的帮助。非常感谢。(因此我的英语很差,我希望我已经讲清楚了。)

MySQL中默认的事务隔离级别是可重复读取,这就是它的含义

如果事务隔离级别为可重复读取(默认值 级别),同一事务中的所有一致读取读取 由该事务中的第一个此类读取建立的快照。你 可以通过提交当前 事务,然后发出新查询


简言之,这意味着如果您在事务期间读取了某些内容,那么对同一事务中相同数据的所有后续读取都将返回相同的结果,这正是您看到的结果。

检查缓存设置。你是如何连接到数据库的?嗨,谢谢你的回复。我们使用JDBC连接到数据库。请问我应该看什么缓存设置?谢谢你的回复。这对我真的很有帮助。实际上,我们正计划通过一点定制来复制一些行,并在不锁定表的情况下将它们插入到a和C之间的同一个表中。因此,我们必须确保这部分数据的副本是正确的。如果我们选择提交当前事务,是否意味着回滚操作对于插入不起作用?或者我们只需要将插入放入单独的事务中