MySQL で重複行を挿入するときに自動インクリメントを防ぐにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-21 01:08:13
オリジナル
933 人が閲覧しました

How Can I Prevent Auto-Increment in MySQL When Inserting Duplicate Rows?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート