重複のない行の挿入: 「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 サイトの他の関連記事を参照してください。

mysqlstringTypesimpactStorageandperformanceAseasfollows:1)churisfixed-regents、whuscanbasterbutlessspace-efficient.2)varcharisvariaible、morespace-efficient-butpotentiallyslower.3)Textisforgergetext、storedoutext、

mysqlstringTypesincludevarchar、テキスト、char、列挙、およびセット。1)varcharisSatileforvariaible-lengthstringsuptoaspoecifedlimit.2)TextisidealforLargetExtStorageWithDeinLength.3)charispixed-consinterconsistentalikodes.4)

mysqloffersvariousstringdatatypes:1)charfixed-lengthstrings、2)varcharforvariable-lengthtext、3)binaryandvartyforbinarydata、4)blobandtextforlargedata、and5)enumandsetforControlledinput.

tograntpermissionstonewmysqlusers、フォローステープ:1)Accessmysqlasauserwithsufthiveerprivileges、2)createanewuser withthecreateusercommand、3)usethegrantcommandtospecifypermissionsionsionsionsionsionsionsionsionsionsionselect、挿入、挿入、挿入、更新、4)

toadduusersinmysqucrectivally andcurally、soflowthesteps:1)usethecreateuserstatementtoaddanewuser、指定するhostandastrongpassword.2)補助金を使用して、補助金を使用して、補助すること、

toaddanewuserwithpermissionsinmysql、followthesesteps:1)createtheuserwithcreateuser'newuser '@' localhost'identifiedifiedifiedifiedby'pa ssword ';。2)grantreadacestoalltablesin'mydatabase'withgrantselectonmydatabase.to'newuser'@'localhost';。3)grantwriteaccessto '

MySQLの文字列データ型には、CHAR、VARCHAR、バイナリ、Varbinary、BLOB、およびテキストが含まれます。照合は、文字列の比較とソートを決定します。 1.Charは固定長の文字列に適しており、Varcharは可変長文字列に適しています。 2.バイナリとVarbinaryはバイナリデータに使用され、BLOBとテキストは大規模なオブジェクトデータに使用されます。 3. UTF8MB4_UNICODE_CIなどのルールのソートは、高度と小文字を無視し、ユーザー名に適しています。 UTF8MB4_BINは症例に敏感であり、正確な比較が必要なフィールドに適しています。

最適なMySQLVarcharの列の長さの選択は、データ分析に基づいており、将来の成長を検討し、パフォーマンスの影響を評価し、文字セットの要件を評価する必要があります。 1)データを分析して、典型的な長さを決定します。 2)将来の拡張スペースを予約します。 3)パフォーマンスに対する大きな長さの影響に注意してください。 4)ストレージに対する文字セットの影響を考慮します。これらの手順を通じて、データベースの効率とスケーラビリティを最適化できます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 中国語版
中国語版、とても使いやすい
