MySQL が重複データを挿入するのを防ぐ 3 つの方法

MySQL が重複データを挿入するのを防ぐ 3 つの方法

新しいテーブルを作成する

テーブル「人」を作成します(
 `id` int NOT NULL COMMENT '主キー',
 `name` varchar(64) 文字セット utf8 照合 utf8_bin NULL デフォルト NULL コメント 'Name',
 `age` int NULL デフォルト NULL コメント '年齢',
 `address` varchar(512) 文字セット utf8 照合 utf8_bin NULL デフォルト NULL コメント 'Address',
 BTREE を使用した主キー (`id`)
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;

次の 3 つのデータを追加します。

挿入方法に応じてこれを回避できます。

1. 無視を挿入

insert ignore は、データベースに既に存在するデータを自動的に無視します (主キーまたは一意のインデックスに基づきます)。データがない場合、データを挿入します。データがある場合、このデータの挿入をスキップします。

--次のようにSQLを挿入します。
ignore を person (id,name,age,address) に挿入します。values(3,'那谁',23,'赣苏省'),(4,'我天',25,'浙江省');

再度データベースを確認すると、ID 4 のデータのみが挿入されていることがわかります。ID 3 のデータは既にデータベースに存在するため、無視されます。

2. を置き換える

replace into は、まずデータをテーブルに挿入しようとします。1. このデータ行がテーブル内に既に存在することが判明した場合 (主キーまたは一意のインデックスによって決定)、まずこのデータ行を削除してから、新しいデータを挿入します。 2. それ以外の場合は、新しいデータを直接挿入します。

--次のようにSQLを挿入します。
人物(ID、名前、年齢、住所)の値(3、'那谁'、23、'赣苏省')、(4、'我天'、25、'浙江省')に置き換えます。

まず、テーブル内のデータを復元し、挿入操作後に、ID 3 のデータが変更され、ID 4 のデータが追加されたことがわかります。

3. 重複キーの更新時に挿入する

重複キー更新時の挿入 insert into ステートメントの最後に重複キー更新 + フィールド更新が指定されている場合、重複データが発生したときに、後続のフィールド更新の記述に従って情報が更新されます (主キーまたは一意のインデックスによって決定されます)。

--次のようにSQLを挿入します。
重複キーに対して person (id,name,age,address) values(3,'那谁',23,'赣苏省') を挿入し、name='那谁'、age=23、address='赣苏省' を更新します。

まず、テーブル内のデータを復元し、挿入操作を実行したときに、ID 3 のデータが変更されていることがわかったので、更新操作を実行しました。

ビジネスニーズに応じて方法を選択できます。

上記は、MySQL がデータを繰り返し挿入するのを防ぐ 3 つの方法の詳細です。MySQL がデータを繰り返し挿入するのを防ぐ方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySql でデータの重複挿入を回避する 3 つの方法
  • MySQLは重複しないデータ挿入を実装するためにUNIQUEを使用する
  • MySQL が重複レコードを挿入するのを防ぐ方法
  • MySql でレコードの重複挿入を回避するいくつかの方法
  • MySQL でデータの重複挿入を回避する 4 つの方法

<<:  Docker で MySQL をインストールし、リモート接続を実装するチュートリアル

>>:  テキストの展開と折りたたみの効果を実現するJavaScript

推薦する

JSブラウザイベントモデルの詳細な説明

目次イベントとは簡単な例イベントをバインドする方法フレームワーク内のイベントイベントオブジェクトイベ...

VMware ワークステーションの仮想マシンの互換性の問題に対する解決策

VMware ワークステーションの仮想マシンの互換性の問題を解決するにはどうすればよいですか?ノート...

VMware15 仮想マシン ブリッジ モードでインターネットにアクセスできない問題の解決方法

説明 ソリューションVMware 15 仮想マシン ブリッジ モードではインターネットにアクセスでき...

Vue は検証コードのカウントダウンボタンを実装します

この記事では、検証コードカウントダウンボタンを実装するためのVueの具体的なコードを例として紹介しま...

フロントエンドコンポーネント化の基礎知識を詳しく解説

目次コンポーネントの基本概念オブジェクトとコンポーネントの違い成分属性属性とプロパティ属性:財産:ク...

MySQL RouterはMySQLの読み取りと書き込みの分離を実装します

目次1. はじめに2. MySQLルーターを構成する2.1 MySQLルーターのインストール2.2 ...

React+Antdはテーブルの追加、削除、変更の例を実装します

目次テーブル/index.jsテーブル/モデル/index.jsテーブル/モデル/モジュール/bas...

この記事では、Vueのフロントエンドページングとバックエンドページングを実装する方法を説明します。

目次1: フロントエンドの手書きページング(データ量が少ない場合) 2: バックエンドのページング、...

Dockerコンテナの操作手順の概要と詳細説明

1. コンテナを作成して実行するdocker run -it --rm centos:latest ...

Vue3の一般的なAPIの使用方法の紹介

目次ライフサイクルの変化反応的な参照vue2.x では ref を使用して要素タグを取得します。vu...

IE10以下のimgタグ問題の解決方法

問題を見つける以前、簡単なデモを書いたのですが、IE10以下では動作しないことがわかりました。ここに...

MySQL で指定エンコーディングを実装する際の落とし穴について

前面に書かれた環境: MySQL 5.7+、MySQL データベースの文字エンコードは utf8、テ...

Reactイベントバインディングの詳細な説明

1. 何ですかreactアプリケーションでは、イベント名はキャメルケース形式で記述されます。たとえ...

MySQL の nvl() 関数に似た ifnull() 関数についての簡単な説明

IFNULL(式1,式2) expr1 が NULL でない場合、IFNULL() は expr1 ...

MySQL データベース アーキテクチャの詳細

目次1. MySQL アーキテクチャ2. ネットワーク接続層3. データベースサービス層4. 接続プ...