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遷移、ターゲット疑似クラス)

推薦する

Vueバインディングオブジェクトと配列変数を変更した後にレンダリングできない問題の解決策

プロジェクトシナリオ:ページ表示には <ul> タグがあります。リストデータを動的に表示...

Linux に nodejs 環境とパス構成をインストールするための詳細な手順

Linux に Node.js をインストールする方法は 2 つあります。1 つは簡単で、解凍して使...

USE DB 輻輳に対する MySQL ソリューションの詳細な説明

障害に遭遇すると、障害の根本的な原因を考えるのではなく、障害を解決する方法を考えることがよくあります...

Linux仮想メモリについての簡単な説明

目次起源仮想メモリページングとページテーブルメモリのアドレス指定と割り当て関数プロセスメモリ管理デー...

HTML テーブルの空白セル補完を実装する方法

私が初めて Web 開発を独学で学んだ頃は、いわゆる DIV/CSS レイアウトはなく、テーブル レ...

Vueカスケードドロップダウンボックスの設計と実装

目次1. データベース設計2. フロントエンドページ3. 完全なデモフロントエンド開発では、カスケー...

HTML における li タグの水平配置の例

ほとんどのナビゲーション バーは、下の図に示すように水平に配置されていますが、これはどのように実現さ...

Mysqlトランザクション操作の失敗を解決する方法

Mysqlトランザクション操作の失敗を解決する方法トランザクションの原子性: トランザクションは、デ...

CSS 配送先住所平行四辺形線スタイルの例コード

コードは次のようになります。 // 配送先住所の平行四辺形の線のスタイル <view clas...

シンプルなID生成戦略: MySQLテーブルからグローバルに一意のIDを生成する実装

グローバル ID を生成する方法は多数あります。ここでは簡単な解決策を紹介します。MySQL の自動...

Vueでアイコンをカスタマイズする手順

ant-design-vue は Ali iconfont icons の使用をカスタマイズします\...

VMware 仮想マシン (CentOS7 イメージ) を使用して Linux をインストールする

1. VMwareのダウンロードとインストールリンク: https://www.jb51.net/s...

MySql ファジークエリ JSON キーワード取得ソリューションの例

目次序文オプション1:オプション2:オプション3:オプション4(最終的に採用されたオプション):要約...

Dockerはdockerfileを使用してnode.jsアプリケーションを起動します

Dockerfileの作成expressによって自動的に作成されたディレクトリを例にとると、ディレク...

antd ツリーと親子コンポーネント間の値転送問題について (React のまとめ)

プロジェクト要件: 製品ツリー ノードをクリックすると、そのノードのすべての親ノードが取得され、表に...