没有完全搞懂"一个事务对应一个连接" 望解答
当起多个线程 每个线程独自获取连接 去执行相同的事务方法 事务不能成功
这里错在哪里 望解答
[b]问题补充:[/b]
多谢wocsok的回答
还有个疑问 多个线程执行相同事务方法 共用一个连接 是不是就正确了
也就是多个逻辑事务,但只有一个数据库事务 不知道这么理解对不对
[b]问题补充:[/b]
多谢linliangyi2007过来回答
事务大致分为两种 一种是数据库事务 一种是逻辑事务 一般咱们的逻辑事务也是由数据库事务控制的 所以 开始事务是由这个数据库连接操纵数据库事务来开启的 关闭也是这个原理
当多个线程 用多个数据库连接同时访问一张数据库表的时候 数据库都是设置数据库隔离级别的 也就是说 要是在串行化的情况下 一个人正访问者这个数据 其他人根本就访问不了 因为这条数据已经被正在访问的这个人锁定住了
我们必须要保证并发的一致性 也就是说 如果我获得的连接 别人也能获得 在我提交之前 但是别人也用这个连接先提交了 那么我再次提交的话 会覆盖别人的提交的 所以要保证一个事务里的连接只有一个人用 而且一个事务只对应一个连接 这样才能保证事务的原子性 隔离性 一致性 和持久性
楼上正解。
楼主的错误可能是数据库表被锁定,也可能是程序有bug,最好有异常报告,否则无法判断