ホームページ > データベース > mysql チュートリアル > mysqlの論理削除を復元する方法

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

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

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

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

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

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

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

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

アイデア:

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

SELECT * FROM md_drainage_basin
<where>
  <if test="basinName != null"> and  basin_name LIKE concat('%',#{basinName},'%')</if>
  <if test="state != null">AND state = #{state}</if>
</where>
ORDER BY sort_order
ログイン後にコピー

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

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

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

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

MdDrainageBasin mdDrainageBasin = mdDrainageBasinService.findById(id);
List<MdWaterSystem> 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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート