使用"可重复读取"应该可以产生幻影读取,但是如何产生呢?我需要它作为一个教授CS学生的例子.

我认为我必须在没有上限888的非索引字段x上进行"SELECT.where x<=888",然后在另一个连接上插入一个值略低于888的新行.

只是它不起作用.我需要一张很大的桌子吗?还是别的什么?

推荐答案

埃里克

我刚刚用大量行测试了它.

您永远不会在InnoDB MySQL上找到具有读提交或更受限隔离级别的幻影.文档中对此进行了说明:

可重复读取:对于一致读取,与已提交读取隔离级别有一个重要区别:同一事务read the snapshot established by the first read内的所有一致读取.此约定意味着,如果在同一事务中发出多个普通(非锁定)SELECT语句,则这些SELECT语句彼此之间也是一致的.请参阅第13.6.8.2节"一致的非锁定读取".

但在读取提交隔离级别中也找不到幻影:这是必要的,因为"幻影行"必须被阻止,MySQL复制和恢复才能工作.

更多详细信息:http://dev.mysql.com/doc/refman/5.1/en/set-transaction.html

我想你需要换成另一个数据库品牌来向你的学生展示幻影.我既用MSSQLSERVER也用Oracle.

嗯...你的第一个问题令人遗憾.

Database相关问答推荐

TYPO3 OOPS,出现错误!编码:202402180809040864ba5c

如果我想支持我的工作负载,我需要多少个 node ?

存储具有公共链接但 ID 很长的用户文件是否安全?

实体关系图. IS A 关系如何转换为table表?

在 PostgreSQL 的数组列中查找字符串

何时将数据库称为嵌入式数据库?

WAMP 的 MySQL 数据库文件位于何处?

数据库供应商如何实现事务?

主必须包括表的分区位置错误中的所有列?

SQL Server 2008如何同步不同服务器中的数据库?

SQLAlchemy 和 django,准备好生产了吗?

一个 5MB 的 SQL 数据库可以存储多少数据?

将实体框架中的字符串列映射到枚举

SOA 和共享数据库

postgresql 在 where 子句中使用 json 子元素

使用 JSON 作为存储/传输格式的数据库

MySQL中的eq_ref和ref类型是什么意思解释

防止 PostgreSQL 有时 Select 错误的查询计划

xampp phpmyadmin,格式参数不正确

在 Heroku 上预编译assets时如何普遍跳过数据库接触