1

我正在测试 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 ) {
}

所以,我正在做的是在几秒钟的间隙内运行相同的脚本两次。测试事务是否锁定了表。

我看到的是只有第一笔交易完成,第二笔交易失败。

请让我知道为什么会这样。。

4

0 回答 0