Detaillierte Erklärung zur Begrenzung des Update-/Löschbereichs mit dem MySQL-Parameter sql_safe_updates

Detaillierte Erklärung zur Begrenzung des Update-/Löschbereichs mit dem MySQL-Parameter sql_safe_updates

Vorwort

Wie Sie alle wissen, sind wir bei MySQL-Betrieb und -Wartung auf viele Fälle gestoßen, in denen Daten aufgrund falscher Aktualisierungs-/Löschbedingungen versehentlich aktualisiert oder gelöscht wurden. Um ähnliche Probleme zu vermeiden, können Sie den Parameter sql_safe_updates verwenden, um Aktualisierungen/Löschvorgänge einzuschränken. Wenn dieser Parameter aktiviert ist, kann er verhindern, dass die gesamte Tabelle aufgrund von Programmfehlern oder manuellen DBA-Fehlern aktualisiert oder gelöscht wird. Schauen wir uns ohne weitere Umschweife die ausführliche Einführung an.

Beim Festlegen dieses Parameters sind einige Dinge zu beachten:

a. Vor dem Festlegen müssen Sie bestätigen, dass alle Aktualisierungen und Löschungen im Programm den Einschränkungen von sql_safe_updates entsprechen. Andernfalls meldet das Programm einen Fehler.

b. 5.0 und 5.1 sind beide auf Sitzungsebene, 5.6 ist global und auf Sitzungsebene. Für Datenbanken mit niedrigerer Version können Sie set sql_safe_updates=on; Für Datenbanken mit höherer Version können Sie set global set sql_safe_updates=on und das Programm nach Abschluss der Einstellung erneut verbinden lassen, damit die Änderungen wirksam werden.

Einschränkungsspezifikationen:

Beispiel einer Tabellenstruktur:

Tabelle „delay_monitor“ erstellen (
 `id` int(11) NICHT NULL,
 `Ftime` Datum/Uhrzeit DEFAULT NULL,
 `Fgtid` varchar(128) NICHT NULL STANDARD '',
 PRIMÄRSCHLÜSSEL (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=lateinisch​

1. Aktualisierung

a. Fehlerbedingungen: ohne Where, mit Where aber ohne Index, Where-Bedingung ist eine Konstante

Ohne Wo: update delay_monitor set Ftime=now();

Mit „where“ und ohne Index: update delay_monitor set Ftime=now() where Fgtid='test';

Wobei die Bedingung eine Konstante ist: update delay_monitor set Ftime=now() where 1;

b. Ausführungsbedingungen: mit where und Index, ohne where + Limit, mit where und keinem Index + Limit, mit where und Index + Limit, wobei Bedingung konstant + Limit ist

Mit Where und Index: update delay_monitor set Ftime=now() where id=2;

Ohne wo + mit Limit: update delay_monitor set Ftime=now() limit 1;

Mit „where“ ohne Index + Limit: update delay_monitor set Ftime=now() where Fgtid='test' limit 1;

Mit where-Index + Limit: update delay_monitor set Ftime=now() where id =2 limit1;

Wobei die Bedingung konstant + Limit ist: update delay_monitor set Ftime=now() where 1 limit 1;

2. Löschen

Im Vergleich zum Aktualisieren unterliegen die Löschvorgänge strengeren Einschränkungen. Wenn die Where-Bedingung eine Konstante oder leer ist, wird der Befehl nicht ausgeführt.

a. Fehlerbedingungen: ohne Where, mit Where aber ohne Index, ohne Where + mit Grenze, Where-Bedingung ist eine Konstante, Where-Bedingung ist eine Konstante + Grenze

Ohne Wo: delete delay_monitor set Ftime=now();

Mit „where“ und ohne Index: delete delay_monitor set Ftime=now() where Fgtid='test';

Ohne wo + mit Limit: delete delay_monitor set Ftime=now() limit 1;

Wobei die Bedingung eine Konstante ist: delete delay_monitor set Ftime=now() where 1;

wobei Bedingung konstant + Limit ist: delete delay_monitor set Ftime=now() where 1 limit 1;

b. Ausführungsbedingungen: mit where und Index, mit where ohne Index + Limit, mit where mit Index + Limit

Mit Where und Index: delete delay_monitor set Ftime=now() where id=2;

Mit „where“ ohne Index + Limit: delete delay_monitor set Ftime=now() where Fgtid='test' limit 1;

Mit where-Index + Limit: delete delay_monitor set Ftime=now() where id =2 limit1;

Die Zusammenfassung lautet wie folgt: Schlüssel bedeutet alles, const bedeutet konstant

arbeiten nirgendwo wobei Schlüssel wo nokey Limit wobei kein Schlüssel + Limit wobei Schlüssel+Grenze wobei const wobei const+limit
löschen NEIN JA NEIN NEIN JA JA NEIN NEIN
aktualisieren NEIN JA NEIN JA JA JA NEIN JA

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung zur Verwendung des MySQL-Parameters sql_safe_updates in der Produktionsumgebung

<<:  Analysieren Sie das Auswahlproblem beim Speichern von Zeit- und Datumstypen in MySQL

>>:  Detaillierte Erläuterung zur Verwendung des Top-Befehls zur Analyse der Linux-Systemleistung

Artikel empfehlen

CentOS 7-Methode zum Ändern des Gateways und Konfigurieren des IP-Beispiels

Wählen Sie bei der Installation der CentOS7-Versi...

Tutorial zur Installation und Konfiguration der Centos7-MySQL-Datenbank

1. Systemumgebung Die Systemversion nach dem Yum-...

Perfekte Lösung für den Themenwechsel basierend auf CSS-Variablen (empfohlen)

Als Baidu diese Anforderung erhielt, fand das Unt...

Das WeChat-Applet verwendet die Videoplayer-Videokomponente

In diesem Artikelbeispiel wird der spezifische Co...

Der Unterschied zwischen Float- und Positionsattributen im CSS-Layout

CSS-Layout – Positionseigenschaft Das Positionsat...

So behandeln Sie den vom Linux-System gemeldeten Fehler tcp_mark_head_lost

Problembeschreibung Kürzlich meldete ein Host die...

Docker-Image-Optimierung (von 1,16 GB auf 22,4 MB)

Inhaltsverzeichnis Der erste Schritt der Optimier...

Prinzipien der MySQL-Datentypoptimierung

MySQL unterstützt viele Datentypen und die Auswah...

Vue realisiert den Card-Flip-Effekt

In diesem Artikelbeispiel wird der spezifische Co...

So kaufen und installieren Sie Alibaba Cloud-Server

1. Kaufen Sie einen Server Im Beispiel handelt es...

Absteigender Index in MySQL 8.0

Vorwort Ich glaube, jeder weiß, dass Indizes geor...

Bei der Verwendung von MySQL aufgetretene Probleme

Hier sind einige Probleme, die bei der Verwendung...