MySQLの読み書き分離により挿入後にデータが選択されなくなる問題を解決

MySQLの読み書き分離により挿入後にデータが選択されなくなる問題を解決

MySQLは独立した書き込み分離を設定します。コードに次のものを書くと問題が発生する可能性があります

//最初に入力します this.insert(obj); 
// 再度クエリを実行します。Object res = this.selectById(obj.getId());
解像度: null;

オンラインでの落とし穴: 読み取りと書き込みの分離を行った後、メソッドを再利用して ID のみを渡すシナリオがあります。後続の処理のために、データベース内のオブジェクトを直接見つけることができます。その結果、見つけることができません。さまざまなトランザクション分離レベルがチェックされました。最終的に、読み取りと書き込みの分離の問題であることが判明したため、アイデアを変更して実装します。

追加知識: MySQL INSERT挿入条件判定:存在しない場合は挿入する

多くの場合、SQL でバッチ挿入を実行する必要があり、レコードが存在しない場合は挿入し、存在する場合は挿入しないことが求められます。 INSERT ステートメントを使用するのはいかがでしょうか?

通常の INSERT 挿入では、重複レコードが挿入されないようにするには、特定のフィールドに対してのみ一意制約を作成できます。

一意の制約を作成せず、1 つの INSERT INTO ステートメントだけで実現できるソリューションはありますか?

回答: INSERT INTO IF EXISTS を使用します。具体的な構文は次のとおりです。

テーブルに挿入(フィールド1、フィールド2、フィールドn) 
'フィールド1'、'フィールド2'、'フィールドn' を選択 
デュアルから
WHERE NOT EXISTS(SELECT フィールド FROM テーブル WHERE フィールド = ?)

例:

(order_id、operator、oper_date、memo) に INSERT INTO します。 
'3'、'onion3'、'2017-11-28'、'テスト3' を選択 
DUALより 
where not exists(where operator='onion3' and memo = '测试3' から order_id を選択);

MySQLの読み取り/書き込み分離により挿入後にデータを選択できない問題を解決する上記の記事は、編集者が皆さんと共有する内容のすべてです。 皆さんの参考になれば幸いです。また、123WORDPRESS.COMを応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL 選択最適化ソリューションに関する簡単な説明
  • MySQL で結果を選択して更新を実行する例のチュートリアル
  • MySQL SELECT文の実行方法
  • MySQL で distinct メソッドを使用する詳細な例
  • MySQL で重複を削除するには、distinct または group by を使用する必要がありますか?
  • MySQL における distinct と group by の違い
  • MySQLのLIMIT文について詳しく説明します
  • union (all) と limit および exists キーワードの使用法を理解するための MySQL シリーズチュートリアル
  • MySQL のクエリパフォーマンスに対する制限の影響
  • MySQL での select、distinct、limit の使用

<<:  docker run後、ステータスは常にExitedになります

>>:  モバイル端末のジャンプ問題を解決する(CSS遷移、ターゲット疑似クラス)

推薦する

ES6実装クラスのプライベート変数の書き方をいくつか詳しく説明します

プライベート変数のクロージャ実装プライベート変数は共有されないnew キーワードにより、 perso...

MySQLクエリ文の実行プロセスの詳細な説明

目次1. クライアントとサーバー間の通信方法2. クエリキャッシュ3. クエリ最適化処理4. クエリ...

MySQL InnoDBエンジンのインデックスとストレージ構造の詳細な説明

序文Oracle や SQL Server などのデータベースには、ストレージ エンジンが 1 つだ...

Linux の vsftpd サービス構成の簡単な分析 (匿名、ユーザー、仮想ユーザー)

vsftpd の概要vsftpd は「very secure FTP daemon」の略称で、セキ...

バックアップと削除のためにリアルタイムでステートメントを検出するMySQLトリガーの考え方の詳細な説明

問題の説明: ユーザーは、テーブルに「違反」という単語を含むフィールドが時々表示されることを要求して...

Vueのコンポーネントの詳細な説明

目次1. コンポーネントの登録2. コンポーネントの使用3. 父から息子へ4. 息子から父へ5. ス...

MySQLを定期的にバックアップしてQiniuにアップロードする方法

ほとんどのアプリケーション シナリオでは、緊急時に備えて重要なデータをバックアップし、安全な場所に保...

Tomcatのクラスロードメカニズムのプロセスとソースコード分析

目次序文1. Tomcat クラスローダー構造図: 2. Tomcat のクラスロードプロセスの説明...

CSSアニメーションに基づくSVGボタンのサンプルコード

具体的なコードは次のとおりです。 <a href="#"> <...

React refsの詳細な紹介

1. 何ですかRefs 、コンピューターでは Resilient File System (ReF...

MySQL 集計関数のネストされた使用操作

目的: MySQL 集計関数のネストされた使用集計関数は直接ネストできません。例: max(coun...

Navicat PremiumでSQLファイルをインポートする方法

今日、最終プロジェクトに取り組み始めましたが、今年はMySQLデータベースを使用したため、Navic...

MySQL の一時テーブルと派生テーブルについての簡単な説明

派生テーブルについてメイン クエリに派生テーブルが含まれている場合、または SELECT ステートメ...

React コンポーネントのコンストラクタとスーパーの知識ポイントのまとめ

1. Reactでクラス宣言する際のヒント 上記のように、Child クラスは class キーワー...