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

Erläuterung der Dockerfile-Anweisungen und der grundlegenden Struktur

Durch die Verwendung von Dockerfile können Benutz...

So melden Sie sich unter Shell schnell ohne Kennwort bei der MySQL-Datenbank an

Hintergrund Wenn wir uns über den MySQL-Client in...

Das WeChat-Applet wählt die Bildsteuerung

In diesem Artikelbeispiel wird der spezifische Co...

Zusammenfassung ungewöhnlicher Operatoren und Operatoren in js

Zusammenfassung gängiger Operatoren und Operatore...

Beispiel zur Optimierung der MySQL-Einfügeleistung

MySQL-Leistungsoptimierung Die MySQL-Leistungsopt...

So testen Sie die maximale Anzahl von TCP-Verbindungen in Linux

Vorwort Es besteht ein Missverständnis bezüglich ...

Detailliertes Tutorial zur Installation von ffmpeg unter Linux

1. Installieren Sie ffmpeg unter Centos Linux 1. ...

Kostenlose Installationskonfigurationsmethode für MySQL 5.7.18 WinX64

1. Herunterladen 2. Dekompression 3. Fügen Sie di...

Probleme mit Vue, das die Homepage von Bibibili imitiert

Technische Struktur Das Projekt ist in zwei Teile...

Detailliertes Beispiel der Lesegeschwindigkeit von JS-Objekten

1. Der Zugriff auf Literale und lokale Variablen ...