1

下面的代码真的会禁用并发执行吗?

LOCK TABLES codes WRITE;
INSERT INTO codes VALUES ();
SELECT mid FROM codes ORDER BY expired DESC LIMIT 0,1;
UNLOCK TABLES;

PHP 将执行 SQL。许多用户将通过 HTTP 请求 PHP 文件。它真的会为每个用户单独执行吗?

mid对每个用户来说都是独一无二的,所以我认为我应该使用 MySQL 锁来实现这一点。

4

1 回答 1

2

如果您有一个带有自动递增键的表,并且您在插入后使用 mysql_insert_id ,则可以保证它是唯一的,并且不会混合用户线程(它会在您提供的连接上获取 ID)。无需锁定表。

http://php.net/manual/en/function.mysql-insert-id.php

于 2012-05-28T11:31:33.537 回答