mysql 幻象读

[sql] view plain copy

  1. CREATE TABLE `t100` (  
  2. `id` bigint(20) NOT NULL default '0',  
  3. `value` varchar(32) default NULL,  
  4. PRIMARY KEY (`id`)  
  5. ) ;  
  6.   
  7. mysql>select @@global.tx_isolation, @@tx_isolation;  
  8. +-----------------------+-----------------+  
  9. | @@global.tx_isolation | @@tx_isolation  |  
  10. +-----------------------+-----------------+  
  11. REPEATABLE-READ       | REPEATABLE-READ |  
  12. +-----------------------+-----------------+  
  13.   
  14. 试验4-1:  
  15.   
  16. SESSION A:   
  17. set autocommit=0;  
  18.   
  19.   
  20.   
  21. SESSION B:  
  22.   
  23.   
  24.   
  25.   
  26. tSessionA                                                     Session B  
  27. |  
  28. set autocommit=0;                                         set autocommit=0;  
  29. | START TRANSACTION;                                  START TRANSACTION;  
  30. |  
  31. SELECT * FROM t100;  
  32. | empty set  
  33. |                                                   INSERT INTO t100 VALUES (1, 'a');  
  34. |                                
  35. |  
  36. SELECT * FROM t100;  
  37. | empty set  
  38. |                                                                      COMMIT;  
  39. |  
  40. SELECT * FROM t100;  
  41. | empty set  
  42. |  
  43. INSERT INTO t100 VALUES (1, 'a');  
  44. | ERROR 1062 (23000):  
  45. | Duplicate entry '1' for key 1  
  46. v (shit,刚刚明明告诉我没有这条记录的)  
  47.   
  48. 如此就出现了幻读,以为表里没有数据,其实数据已经存在了,傻乎乎的提交后,才发现数据冲突了。 
原文地址:https://www.cnblogs.com/wuhan729/p/8443232.html