我正在测试 MySql 中的事务。我创建了两个表:
CREATE TABLE `testtransaction1` (
`a` bigint(20) DEFAULT NULL,
`b` bigint(20) DEFAULT NULL
) ENGINE=InnoDB;
CREATE TABLE `testtransaction2` (
`a` bigint(20) DEFAULT NULL,
`b` bigint(20) DEFAULT NULL
) ENGINE=InnoDB;
之后我运行脚本:
$conn->StartTrans ();
try {
$conn->Execute("insert into testtransaction1(a) values (1),(2)");
sleep(5);
$conn->Execute("insert into testtransaction2 select * from testtransaction1 where b is null");
$conn->Execute("update testtransaction1 set b=100 where b is null");
echo "Ran insert into testtransaction2 select * from testtransaction1 where b is null";
$out=$conn->CompleteTrans ($autoComplete=true);
var_dump($out);
} catch ( Exception $e ) {
}
所以,我正在做的是在几秒钟的间隙内运行相同的脚本两次。测试事务是否锁定了表。
我看到的是只有第一笔交易完成,第二笔交易失败。
请让我知道为什么会这样。。