MySQL での重複挿入時の自動インクリメントの防止
自動インクリメントされる主キーを含む MySQL テーブルを操作する場合、次のことが困難な場合があります。重複した行を挿入するときに増加しないようにします。この問題は、一意のフィールドを操作し、INSERT IGNORE などのステートメントを使用する場合に特に発生します。
この問題に対処するには、変更された挿入ステートメントを使用できます。
INSERT INTO tablename (tag) SELECT $tag FROM tablename WHERE NOT EXISTS( SELECT tag FROM tablename WHERE tag = $tag ) LIMIT 1
このステートメントは、タグがネストされた SELECT クエリを使用して、テーブルにすでに存在します。存在する場合、INSERT ステートメントは実行されず、自動インクリメントが妨げられます。このアプローチは、テーブルに適切にインデックスが作成されている場合、追加の SELECT クエリが高速になるため効率的です。
最初のタグ挿入では、空のテーブルを個別にチェックするか、頻繁に使用されるタグをテーブルにシードする必要があります。 。このアプローチは、重複した挿入試行による主キーの不必要な増加を効果的に防ぎます。
以上がMySQL で重複行を挿入するときに自動インクリメントを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。