我正在运行两个同时的 PHP/MySQL 脚本。gg MySQL 表在脚本的开头有 11 行,ID 范围从 1 到 11。我不会打扰正确的函数,但会将其作为某种伪代码处理。
在第一个中,我有以下代码:
php mysql_query "BEGIN WORK;"
php mysql_query "SELECT * FROM gg;"
php mysql_query "DELETE FROM gg WHERE id > 5;"
php "sleep(15)"
php mysql_query "SELECT * FROM gg;"
php mysql_query "COMMIT;"
第一次选择的结果是 11 行。第二次选择的结果是 05 行。
在第二个中,我有以下代码(无睡眠):
php mysql_query "BEGIN WORK;"
php mysql_query "SELECT * FROM gg;"
php mysql_query "DELETE FROM gg WHERE id > 5;"
php mysql_query "SELECT * FROM gg;"
php mysql_query "COMMIT;"
第一次选择的结果是 11 行。第二次选择的结果是 11 行。
sleep 函数只是用于在提交之前强制延迟。第二个事务中的第二个选择在第一个脚本提交之后执行。
我的疑问是:如果第一个事务的提交已经执行,为什么第二个事务中的第二个 SELECT 返回 11 行?