序文 MySql で主キーの競合または一意キーの競合が発生した場合、挿入方法に応じてエラーを回避するための挿入方法が一般的に 3 つあります。
挿入無視 insert ignore は、データベースにすでに存在するデータを無視します。主キーまたは一意のインデックスに基づいてデータベースにデータがない場合、新しいデータを挿入します。データがある場合は、このデータをスキップします。 小型ケース テーブル構造 ルート:テスト> show create table t3G ************************** 1. 行 **************************** 表: t3 テーブルの作成: CREATE TABLE `t3` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c1` int(11) デフォルト NULL, `c2` varchar(20) デフォルト NULL, `c3` int(11) デフォルト NULL, 主キー (`id`)、 ユニークキー `uidx_c1` (`c1`) ) エンジン=InnoDB AUTO_INCREMENT=18 デフォルト文字セット=utf8 セット内の 1 行 (0.00 秒) ルート:テスト> t3 から * を選択します。 +----+------+------+------+ | id | c1 | c2 | c3 | +----+------+------+------+ | 1 | 1 | 1 | 1 | | 2 | 2 | 1 | | 8 | NULL | NULL | 1 | | 14 | 4 | bb | NULL | | 17 | 5 | cc | 4 | +----+------+------+------+ セット内の行数は 5 です (0.00 秒) 競合するデータを挿入する root:test> insert ignore into t3 (c1,c2,c3) values(5,'cc',4),(6,'dd',5); クエリは正常、1行が影響を受け、1つの警告 (0.01秒) 記録: 2 重複: 1 警告: 1 結果を見る root:test> 警告を表示します。 +---------+------+---------------------------------------+ | レベル | コード | メッセージ | +---------+------+---------------------------------------+ | 警告 | 1062 | キー 'uidx_c1' のエントリ '5' が重複しています | +---------+------+---------------------------------------+ セット内の 1 行 (0.00 秒) ルート:テスト> t3 から * を選択します。 +----+------+------+------+ | id | c1 | c2 | c3 | +----+------+------+------+ | 1 | 1 | 1 | 1 | | 2 | 2 | 1 | | 8 | NULL | NULL | 1 | | 14 | 4 | bb | NULL | | 17 | 5 | cc | 4 | | 18 | 6 | dd | 5 | +----+------+------+------+ セット内の 6 行 (0.00 秒) 置き換える replace into は最初にデータを挿入しようとし、競合が見つかった場合はそれを削除します。それ以外の場合は何もしないでください。 小型ケース ルート:テスト> show create table t3G ************************** 1. 行 **************************** 表: t3 テーブルの作成: CREATE TABLE `t3` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c1` int(11) デフォルト NULL, `c2` varchar(20) デフォルト NULL, `c3` int(11) デフォルト NULL, 主キー (`id`)、 ユニークキー `uidx_c1` (`c1`) ) エンジン=InnoDB AUTO_INCREMENT=4 デフォルト文字セット=utf8 セット内の 1 行 (0.00 秒) ルート:テスト> t3 から * を選択します。 +----+------+-------+------+ | id | c1 | c2 | c3 | +----+------+-------+------+ | 1 | 1 | cc | 4 | | 2 | 2 | dd | 5 | | 3 | 3 | いいえ | 3 | +----+------+-------+------+ セット内の 3 行 (0.00 秒) 競合するデータを挿入する root:test> t3 (c1,c2,c3) に値を置き換えます(3,'new',8); クエリは正常、2 行が影響を受けました (0.02 秒) ルート:テスト> t3 から * を選択します。 +----+------+------+------+ | id | c1 | c2 | c3 | +----+------+------+------+ | 1 | 1 | cc | 4 | | 2 | 2 | dd | 5 | | 4 | 3 | 新着 | 8 | +----+------+------+------+ セット内の 3 行 (0.00 秒) 元のレコードが消えて、新しいレコードが出現したことがわかります。 重複キーの更新時に挿入 insert into 文の最後に insert on duplicate key update を指定した場合、重複した値が出現すると、重複した値が出現した後に更新が行われます。 場合 ルート:テスト> show create table t3G ************************** 1. 行 **************************** 表: t3 テーブルの作成: CREATE TABLE `t3` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c1` int(11) デフォルト NULL, `c2` varchar(20) デフォルト NULL, `c3` int(11) デフォルト NULL, 主キー (`id`)、 ユニークキー `uidx_c1` (`c1`) ) エンジン=InnoDB AUTO_INCREMENT=4 デフォルト文字セット=utf8 セット内の 1 行 (0.00 秒) ルート:テスト> t3 から * を選択します。 +----+------+------+------+ | id | c1 | c2 | c3 | +----+------+------+------+ | 1 | 1 | 4 | | 2 | 2 | ユーチュー | 3 | | 3 | 3 | czx | 5 | +----+------+------+------+ セット内の 3 行 (0.00 秒) レコード id=3 の一意のキー (列 c1) と競合するデータを挿入します。 root:test> t3(c1,c2,c3) に値 (3,'new',5) を挿入し、重複キーを更新します。c1=c1+3; クエリは正常、2 行が影響を受けました (0.01 秒) ルート:テスト> t3 から * を選択します。 +----+------+------+------+ | id | c1 | c2 | c3 | +----+------+------+------+ | 1 | 1 | 4 | | 2 | 2 | ユーチュー | 3 | | 3 | 6 | czx | 5 | +----+------+------+------+ セット内の 3 行 (0.00 秒) id=3 のレコードが変更され、c1=元の c1+3 となり、他の列は変更されていないことがわかります。 上記は、重複データの挿入を回避するための 4 つの MySql メソッドの詳細です。重複データの挿入を回避するための MySQL の詳細については、123WORDPRESS.COM の他の関連記事をご覧ください。 以下もご興味があるかもしれません:
|
<<: Vue でコミュニケーションを実装する 8 つの方法
1) jdkファイルが保存されているフォルダパスを入力します私はここにいますusr/local/jd...
ダウンロードリンク:動作環境VMware 仮想マシンの CentOS 7.6セキュアCRT Xftp...
テキストファイルの内容を並べ替える使用方法: ソート + オプション + ファイル名 (複数のファイ...
ここ数日ブログを更新していませんでした。簡単な HTML+CSS プロジェクトを終えたところです。数...
クリップパスの使用ポリゴン値は複数の座標点で構成されます。最初の値は x 方向、2 番目の値は y ...
フロントエンド開発では、ユーザーと直接やり取りするため、ユーザーが操作がスムーズで快適だと感じ、ネイ...
MySQL データベースの作成MySQL サービスにログインしたら、create コマンドを使用し...
tbody 要素は、thead 要素および tfoot 要素と組み合わせて使用する必要があります...
テーブル名とフィールド–1. 学生リスト学生 (s_id、s_name、s_birth、s_sex)...
1. 公式サイトからmysql-8.0.17-winx64をダウンロードし、Zipファイル形式を選択...
BMP は、ハードウェア デバイスに依存せず、広く使用されている画像ファイル形式です。ビットマップ保...
プロセス構造図Nginx はマルチプロセス構造です。マルチプロセス構造は、次のような Nginx の...
バックグラウンド管理プロジェクトを行う際には、リッチテキストエディタがよく使用されます。ここでは、非...
次のような効果がよく見られます。 そうです、ページ上でよく使われる「展開と折りたたみ」のインタラクシ...
序文MySQL スロー クエリ ログは、MySQL が提供するログ レコードの一種です。これは、応答...