在Repeatable Read Isolation Level中,它不会阻止其他事务将新行插入到当前事务中已选择的表中。我想知道 DELETE 或 UPDATE 查询出现时背后的理论?考虑以下我正在尝试解决的示例。
假设使用关系数据库管理系统 (RDBMS) 和严格的 2 阶段锁定方法来进行并发控制。
ID Balance Name
1 12 A
2 18 B
10 100 C
下面的时序图显示了基于上述Customer表 T1 和 T2 的两个并发事务的执行,这两个事务都在REPEATABLE_READ 事务隔离级别上执行。
T1 T2
SELECT * FROM Customer |
WHERE Balance BETWEEN 10 AND 20; |
| **QUERY X**
| COMMIT; "
SELECT * FROM Customer |
WHERE Balance BETWEEN 10 AND 20; |
如果将以下 SQL 语句之一替换为T2 上的QUERY X而不是 INSERT 查询,是否会出现 Phantom 异常?证明你的答案。
- 更新客户设置余额 = 14 WHERE 余额 = 100;
- 从客户那里删除余额 = 12;
我是 DBMS 的新手,因此我非常感谢您提供帮助我更好地理解这些问题的友好解释。