Heim  >  Artikel  >  Datenbank  >  So stellen Sie eine logische Löschung von MySQL wieder her

So stellen Sie eine logische Löschung von MySQL wieder her

(*-*)浩
(*-*)浩Original
2019-05-10 10:58:084308Durchsuche

In Projekten werden Sie im Allgemeinen auf diese Situation stoßen: Logisches Löschen und mehrere Zuordnungen werden nicht gelöscht

Logisches Löschen (weiches Löschen): Beim logischen Löschen werden normalerweise die zu löschenden Daten mit einer Löschmarkierung versehen Verwenden Sie ein is_deleted-Feld, um anzugeben, ob der Zeilendatensatz gelöscht wurde (oder verwenden Sie ein Statusfeld, um den sogenannten „gelöschten“ Status darzustellen. Logischerweise sind die Daten gelöscht, die Daten selbst sind jedoch noch vorhanden).

Empfohlene Kurse: MySQL-Tutorial

So stellen Sie eine logische Löschung von MySQL wieder her

wurde von der Startseite gelöscht und wird tatsächlich nicht angezeigt nicht aus der Datenbank gelöscht, nur basierend auf der Idee eines Statusfeldes, 0 zum Starten, 1 zum Deaktivieren.

Das logische Löschen besteht also lediglich darin, ein Feld mit dem Namen Status zu ändern, um festzustellen, ob die Front-End-Seite angezeigt wird. Wenn Sie sie wiederherstellen möchten, müssen Sie nur den Status ändern Feld zurück.

Idee:

Wenn Sie Abfrage-SQL in XML schreiben, fügen Sie eine weitere Bedingung hinzu, das Statusfeld in der Bibliothek

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

Dann, wenn wir die Daten dem Frontend bereitstellen Seite, wir müssen es selbst tun. Führen Sie den Standardvorgang im Java-Code aus, da das Frontend keinen Statuscode in der Abfrage übergibt. Der Hintergrund generiert standardmäßig

mdDrainageBasin.setState(0);
List<MdDrainageBasin> list = mdDrainageBasinMapper.findByQuery(mdDrainageBasin);

und legt den Status fest 0 an die Entitätsklasse und führt dann die Abfrage durch. Auf diese Weise sieht das Frontend nur Daten mit dem Status 0

Beim logischen Löschen wird der Statuscode auf 1 aktualisiert und update statt delete aufgerufen Unter Berücksichtigung der Multi-Table-Beziehung, z. B. wenn ein Wassereinzugsgebiet logisch gelöscht wird, wird das darunter liegende Wassersystem ebenfalls logisch gelöscht und nicht angezeigt. Zu diesem Zeitpunkt kann beurteilt werden, ob ein entsprechender Wert vorliegt Wassersystem unter dem Wassereinzugsgebiet, es wird nicht gelöscht, andernfalls wird es gelöscht

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);
}

Fragen Sie anhand der vom Frontend übergebenen ID ab, welches Wassereinzugsgebiet und wie viele Wassersysteme sich unter diesem Wassereinzugsgebiet befinden . Wenn ein Wassersystem vorhanden ist, löschen Sie es nicht. Wenn kein Wassersystem vorhanden ist, löschen Sie es

Das obige ist der detaillierte Inhalt vonSo stellen Sie eine logische Löschung von MySQL wieder her. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn