ホームページ > データベース > mysql チュートリアル > 一意のキーの競合が発生した場合、MySQL はエラーなしで行を挿入できますか?

一意のキーの競合が発生した場合、MySQL はエラーなしで行を挿入できますか?

Barbara Streisand
リリース: 2025-01-04 08:55:35
オリジナル
510 人が閲覧しました

Can MySQL Insert Rows Without Errors When Unique Key Conflicts Occur?

重複のない行の挿入: 「INSERT ... ON DUPLICATE KEY (何もしない)」について

質問:

MySQL は、一意のキーが存在する場合にエラーを生成せずに挿入操作を実行できますか?競合が発生しますか?

具体的には、主キーがまだ存在しない場合にのみ、INSERT ステートメントを使用してテーブルに行を挿入する方法はありますか?

回答:

MySQL は、INSERT 中に重複キーの競合を処理する 2 つの方法を提供します操作:

1. INSERT ... ON DUPLICATE KEY UPDATE

この構文では、挿入操作によって重複キー違反が発生する場合に実行される追加アクションを指定できます。たとえば、既存の行を新しい行の値で更新できます。

ただし、ON DUPLICATE KEY UPDATE 句には特定の "DO NOTHING" オプションはありません。

2. INSERT ... ON DUPLICATE KEY UPDATE>

別の方法として、この構文を使用して重複キーの競合を基本的に無視することもできます。この場合、id 列はそれ自体に割り当てられ、更新はトリガーされません。

3. INSERT IGNORE

厳密なエラー処理が必要なく、自動インクリメント フィールドや外部キー制約に関する潜在的な問題を心配しない場合は、INSERT IGNORE ステートメントを使用できます。この構文は、重複キーが見つかった場合に挿入操作をスキップします。

例:

質問に記載されている user_permanent_gift テーブルを考えてみましょう。キーが重複している場合にエラーを生成せずにこのテーブルに行を挿入するには、次のステートメントを使用できます。

INSERT IGNORE INTO user_permanent_gift (fb_user_id, gift_id, purchase_timestamp) VALUES (123, 456, '2022-03-15 12:00:00');
ログイン後にコピー

このステートメントは行の挿入を試みますが、fb_user_id と Gift_id の組み合わせがすでにテーブルに存在する場合、エラーは生成されずに挿入はスキップされます。

以上が一意のキーの競合が発生した場合、MySQL はエラーなしで行を挿入できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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