4

auto_incrementが進むべき道であることは知っていますが、テーブルの列が繰り返される可能性があり、一意ではないため、auto_increment 機能を使用できません。テーブルに新しい行を挿入するとき、次に挿入できる場所を見つける方法が必要です。

たとえば、テーブル構造:

 Primary Key = (ID, UserID)
 ID   UserID 
 3    6
 3    1
 1    3

クエリを挿入するときは、 4ではなくID = 2でそれを挿入したいと考えています。auto_incrementを使用すると、 4になります

PHPでループを使わない解決策はありますか? これまでのところ、すべての行を配列にフェッチしてから、ID で次に使用可能な数字を見つけます。PHPですべての行をフェッチせずに、MySQLクエリでそれを行うだけでこれを行うことは可能ですか?

4

4 に答える 4

3

いいえ、データを処理しないとできません。この問題を修正するための推奨される方法は、一意の自動インクリメント可能なフィールドをサポートするようにテーブル構造を調整することです。それができない場合は、(PHP または SQL ステートメントを介して) データを処理して空きスロットを見つける必要があります。

于 2013-04-18T22:00:35.983 に答える