3

PHP と MySQL を使用して、データ テーブルとそれに関連付けられた多対多テーブルにデータを挿入したいと考えています。データ テーブルの自動インクリメント プライマリ ID は、多対多テーブルで使用されます。したがって、多対多テーブルに挿入するデータ テーブルの ID を知る必要があります。

私の現在の考えでは、これにアプローチする最善の方法は、最初にデータ テーブルに挿入し、次に mysql_insert_id() を使用して多対多テーブルに挿入するループを使用することです。これが最善の方法ですか?

さらに、その関数で間違った ID を取得することを心配する必要がありますか? 多くのワーカーがこのデータ スクリプトを同時に使用することになるため、あるワーカー クエリからの ID が、別のワーカーの mysql_insert_id() への呼び出しで返されることになるのではないかと懸念しています。それは正当な懸念事項ですか? もしそうなら、どうすれば対処できますか?

4

2 に答える 2

3

mysql_insert_id()auto_increment id を使用してテーブルを呼び出すことは、まさに正しいアプローチです。

mysql_insert_id()行を挿入するために呼び出した直後に呼び出す限りmysql_query()、間違った ID を取得することを心配する必要はありません。PHP と MySQL がすべての処理を行います。

于 2010-09-14T23:21:54.073 に答える
-3

テーブルをロックできれば。

LOCK TABLE myTable FOR WRITE;
SELECT MAX(id) FROM myTable;
INSERT....
INSERT....
INSERT....
SELECT MAX(id) FROM myTable;
UNLOCK TABLES;

これにより、他の誰かが myTable を操作できなくなりますが、ID の最小/最大範囲が設定されます。

-ダニエル

于 2010-09-14T23:22:02.497 に答える