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

Der einfachste Weg, das MySQL-Root-Passwort zurückzusetzen

Meine MySQL-Version ist MySQL V5.7.9, bitte verwe...

MySQL 8.0.18 Installations-Tutorial unter Windows (Abbildung)

Herunterladen Download-Adresse: https://dev.mysql...

Drei Möglichkeiten zum Löschen einer Tabelle in MySQL (Zusammenfassung)

Drop-Tabelle Drop löscht Tabelleninformationen di...

Detaillierte Erklärung der Methode getBoundingClientRect() in js

1. getBoundingClientRect() Analyse Die Methode ge...

Detailliertes Tutorial zur Installation von Mysql5.7.19 auf Centos7 unter Linux

1. MySQL herunterladen URL: https://dev.mysql.com...

Berechtigungen für Cross-Origin-Image-Ressourcen (CORS-fähiges Image)

Das HTML-Spezifikationsdokument führt das Crossor...

Mehrere Navigationsrichtungen, die in Zukunft beliebt sein werden

<br />Dies ist nicht nur ein Zeitalter der I...

JavaScript CSS3 zur Implementierung einer einfachen Video-Sperrfunktion

In diesem Artikel wird versucht, eine Demo zur Si...

Zusammenfassung zur Positionierung in CSS

Es gibt vier Arten der Positionierung in CSS, die...

So installieren und konfigurieren Sie MySQL und ändern das Root-Passwort

1. Installation apt-get install mysql-server erfo...