【发布时间】:2013-04-09 03:08:14
【问题描述】:
我得到了某人制作的这个脚本,我查看了它并发现了一些我不确定是否安全的东西:
在一个事务中,有 2 个连续插入,在 2 个不同的表中,都具有自动递增的主键。它们应该是相同的(第一次插入生成的主键=第二次插入生成的主键)。
别问我为什么,剧本就是这么写的。
我是交易新手,我不太清楚这里是否存在并发问题。我正在考虑另一个线程同时运行并最终生成密钥的可能性,例如:
Thread #1: Table_A ID: 3 Table_B ID: 4
Thread #2: Table_A ID: 4 Table_B ID: 3
我很确定(我今天才第一次准备与交易相关的文档)交易无法防止这种情况发生,但我只是想确保我做对了。
谢谢!
【问题讨论】:
-
您可以通过启动两个控制台会话来测试您的理论,并按照您认为会产生问题的顺序逐步在每个控制台中输入您的交易。您甚至可以尝试使用不同的隔离级别来做同样的事情,看看是否有任何变化。
-
对 :) 我完全没想到。我忘记了整个控制台方法。谢谢!
标签: mysql concurrency insert transactions isolation