Databases Reference
In-Depth Information
Beim kritischen Lesen fällt auf, dass man die Überlegungen
zum
DELETE
auch zum
UPDATE
anstellen kann. Dazu ist an-
zumerken, dass der SQL-Standard Möglichkeiten wie
ON UP-
DATE CASCADE
vorsieht, dieses aber nur bei wenigen großen
Datenbank-Managementsystemen implementiert ist. Die Mög-
lichkeiten und Argumentationen zum Für und Wider lassen
sich dabei direkt von der Diskussion zum
DELETE
auf eine Dis-
kussion zum
UPDATE
übertragen.
Vergleichbare Überlegungen wie zu
DELETE
und
UPDATE
kann
man auch zum Löschen von Tabellen anstellen. Mit dem Befehl
Fortpflanzung
bei Aktualisie-
rungen
Löschen von Ta-
bellen
DROP TABLE
<Tabellenname>
RESTRICT
wird die Tabelle mit dem Namen <Tabellenname> nur gelöscht,
wenn es keine anderen Tabellen gibt, die von dieser Tabelle ab-
hängig sind. D. h. es gibt keine andere Tabelle, in der ein
Fremdschlüssel auf die zu löschende Tabelle referenziert. Gibt
es solch eine Tabelle, wird der Löschbefehl nicht durchgeführt.
Die Nutzung des Schlüsselworts
RESTRICT
macht das Löschen
sehr sicher, da man so nicht zufällig eine zentrale Tabelle mit
vielen Abhängigkeiten löschen kann. Allerdings bedeutet dies
auch für Löschvorgänge, bei denen mehrere Tabellen gelöscht
werden sollen, dass man zunächst die Tabelle herausfinden
muss, auf die es keine Verweise gibt und dann die weiteren Ta-
bellen schrittweise löscht. Dies kann man sich wie eine Kette
von Dominos vorstellen, bei der man vorsichtig die letzten
Dominos entfernt, da man möchte, dass die Dominoschlange
beim Umkippen in eine andere Richtung läuft.
Alternativ gibt es den Befehl
DROP TABLE
<Tabellenname>
CASCADE
mit dem garantiert wird, dass die Tabelle mit dem Namen <Ta-
bellenname> gelöscht wird. Durch das
CASCADE
wird ausge-
drückt, dass Tabellen, die Referenzen auf die zu löschende Ta-
belle haben, so verändert werden, dass diese Referenzen ge-
löscht werden. Dies bedeutet konkret, dass Constraints mit
Fremdschlüsseln, die sich auf die zu löschende Tabelle bezie-
hen, mit gelöscht werden. Dabei bleiben aber alle anderen Da-
ten in der vorher abhängigen Tabelle erhalten, man kann sicher
sein, dass die zu löschende Tabelle mit allen Spuren im System
gelöscht wird.
Generell gibt es auch den kürzeren Befehl
125