1

次のコードは本当に同時実行を無効にしますか?

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

PHPはSQLを実行します。PHPファイルは、HTTPを介して多くのユーザーから要求されます。それは本当にすべてのユーザーに対して分離して実行されるのでしょうか?

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 に答える