Für MySQL-Neulinge kann die Startoption
--safe-updates
(bzw.
--i-am-a-dummy
, was den gleichen Effekt
hat) ausgesprochen nützlich sein. Sie hilft in Fällen, in
denen Sie eine DELETE FROM
-Anweisung
abgesetzt, aber die tbl_name
WHERE
-Klausel
vergessen haben. Normalerweise werden durch eine solche
Anweisung nämlich alle Datensätze in der Tabelle
gelöscht. Mit --safe-updates
können Sie
Datensätze nur dann löschen, wenn die Schlüsselwerte
angegeben sind, mit denen sie identifiziert werden. Auf
diese Weise werden Unfälle verhindert.
Wenn Sie die Option --safe-updates
benutzen, setzt mysql beim Herstellen der
Verbindung zum MySQL Server die folgende Anweisung ab:
SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=1000, SQL_MAX_JOIN_SIZE=1000000;
Siehe auch Abschnitt 13.5.3, „SET
“.
Die Anweisung SET
hat die folgenden
Auswirkungen:
Sie dürfen eine UPDATE
- oder
DELETE
-Anweisung nur dann ausführen,
wenn Sie einen Schlüssel-Constraint in der
WHERE
-Klausel spezifiziert oder eine
LIMIT
-Klausel angegeben haben (oder
beides). Zum Beispiel:
UPDATEtbl_name
SETnot_key_column
=val
WHEREkey_column
=val
; UPDATEtbl_name
SETnot_key_column
=val
LIMIT 1;
Der Server beschränkt alle umfangreichen
SELECT
-Ergebnisse auf 1.000
Datensätze, sofern die Anweisung keine
LIMIT
-Klausel enthält.
Der Server bricht tabellenübergreifende
SELECT
-Anweisungen ab, bei denen
voraussichtlich mehr als 1.000.000
Datensatzkombinationen untersucht werden müssten.
Um andere Grenzen als 1.000 und 1.000.000 anzugeben, können
Sie die Vorgaben mithilfe der Optionen
--select_limit
und
--max_join_size
außer Kraft setzen:
shell> mysql --safe-updates --select_limit=500 --max_join_size=10000
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.