MySQL事务隔离

时间:2011-11-01 14:29:47

标签: mysql

我在历史记录表中看到重复的行 - 但是首先更新它的事务会从中删除;然后重新插入每个数据。其他查询是正确的(大部分时间工作都很好)。

select语句如何才能看到数据的不一致视图?

create my_history_table (
  `a` int(11),
  `b` int(11),
  `timestamp` datetime
) ENGINE=InnoDB;

我们根据需要更新此表:

  set autocommit=0;
  set transaction isolation level read committed;
  start transaction;
    delete from my_history_table;
    <loop on cursor inserting results for each>
  commit;

在另一个存储过程中,我们将这些结果读回客户端:

select * from my_history_table join anotherTable using (a);

1 个答案:

答案 0 :(得分:0)

所以答案是删除;在获得锁定时超时,但从MySQL 5.0.31开始,它不会自动回滚事务。所以它在没有进行删除的情况下进行插入并提交了这个混乱。