mysqlの論理削除を復元する方法

(*-*)浩
リリース: 2020-09-16 11:56:59
オリジナル
4204 人が閲覧しました

プロジェクトでは、一般的に次のような状況に遭遇します: 論理削除とマルチ関連付けが削除されない

論理削除 (ソフト削除): 論理削除は、削除するデータに削除マークを付けることです。通常は、is_deleted フィールドを使用して、行レコードが削除されたかどうかを示します (または、ステータス フィールドを使用して、いわゆる「削除」ステータスを表します)。論理的には、データは削除されますが、データ自体はまだ存在します。

推奨コース:MySQL チュートリアル

mysqlの論理削除を復元する方法

はフロントエンド ページで削除され、表示されません。データベースでは削除されません。ステータス フィールドの考え方に基づいており、0 で開始、1 で非アクティブ化されます。

つまり、論理的な削除は、ステータスという名前のフィールドを変更して、フロントエンド ページが表示されるかどうかを決定するだけです。データ自体は削除されていません。復元したい場合は、ステータスを変更するだけで済みます。フィールドバック。

アイデア:

XML でクエリ SQL を記述する場合、ライブラリのステータス フィールドという条件をもう 1 つ追加します。

SELECT * FROM md_drainage_basin   and basin_name LIKE concat('%',#{basinName},'%') AND state = #{state}  ORDER BY sort_order
ログイン後にコピー

次に、データをフロントエンドに提供するときに、ページでは、フロントエンドがクエリでステータス コードを渡さないため、Java コードでデフォルトの操作を自分で実行する必要があります。バックグラウンドはデフォルトで

mdDrainageBasin.setState(0); List list = mdDrainageBasinMapper.findByQuery(mdDrainageBasin);
ログイン後にコピー

を生成し、ステータス 0 をこのようにして、フロントエンドはステータス 0

のデータのみを参照し、論理的な削除によりステータス コードが 1 に更新され、削除の代わりに更新が呼び出されます。流域の下にぶら下がっているなどのテーブル関係 流域を論理的に削除すると、その下にある水系も論理的に削除され表示されなくなりますが、このとき流域の下に対応する水系があれば該当するものと判断できますは削除されません、そうでない場合は削除されます

MdDrainageBasin mdDrainageBasin = mdDrainageBasinService.findById(id); List list = mdWaterSystemMapper.findByWater(mdDrainageBasin.getBasinCode()); if (list.size() > 0) { return ResponseMsgUtil.failure(); } else { mdDrainageBasin.setState(1); mdDrainageBasinService.update(mdDrainageBasin); return ResponseMsgUtil.success(mdDrainageBasin); }
ログイン後にコピー

フロントエンドから渡された ID に従って、どの流域と、この流域の下にいくつの水系があるかをクエリします。水システムがない場合は削除してください

以上がmysqlの論理削除を復元する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!