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

推薦する

MySql データベースにリモートでログインするにはどうすればよいですか?

はじめに: プロジェクトを開発するために、サーバーに MySql データベース サーバーを展開し、ロ...

サイト全体を灰色にするCSSコードのまとめ

国務院は本日、新型コロナウイルス感染症との闘いで殉教した方々と犠牲者に対し、全国各民族人民の深い哀悼...

Docker Tomcat のアクセス インターフェイスが表示されないのはなぜですか?

質問:オリジン サーバーはターゲット リソースの表現を見つけることができないか、既存の表現を公開した...

Vueリスナーの使用例の詳細な説明

1つ目はjQueryのajaxを使用してリクエストを送信することです ユーザーが登録するときに、リス...

Vueメソッドに基づくシンプルなタイマーの実装

Vueのシンプルなタイマーを参考にしてください。具体的な内容は以下のとおりです原理: setInte...

CentOS8 で Docker を使用してオープンソース プロジェクト Tcloud をデプロイするチュートリアル

1. Dockerをインストールする1. 仮想マシンに Centos7 をインストールしました。Li...

CSS 属性セレクタを使用して HTML DNA を接合する方法

CSS 属性セレクターは素晴らしいです。大量のクラス名を追加することを回避し、コード内の問題を指摘す...

Vueはプログレスバーの変更効果を実現します

この記事ではVueを使ってプログレスバーの変更を簡単に実装してみましたので参考にしてください。具体的...

...

MySQL の接続数が多すぎるエラーの原因と解決策

目次概要本日正午、開発およびテスト環境の MySQL サービスで接続数が多すぎるというエラーが報告さ...

Alibaba Cloud CentOS 7 に MySQL 8.0.13 をインストールする方法

1. MySQL インストール パッケージをダウンロードします(ここにはコツがあります。おそらく、こ...

HTML に埋め込まれた Flash HTML ウェブページ コードに Flash ファイルを埋め込むソリューション (パート 2)

上の記事で、SWFObject V1.5 の使い方の紹介は一旦終了です。これから、SWFObject...

ホストサービスにアクセスするDockerでのサービスの実装

目次1. シナリオ2. 解決策3. 結論4. 参考文献1. シナリオ日常の開発およびテスト作業には ...

InnoDB エンジンの redo ファイルのメンテナンス方法

InnoDB REDO ログ ファイルのサイズと数を調整する場合は、次の手順に従います。 1. My...

Docker で Elasticsearch Kibana と ik Word Segender をデプロイする詳細な説明

esインストール docker pull elasticsearch:7.4.0 # -d : バッ...