Databases Reference
In-Depth Information
Eine weitere mächtige Möglichkeit bieten Trigger . Diese reagie-
ren, wenn ein bestimmtes Ereignis, wie das Einfügen, Ändern
oder Löschen von Daten eintritt und eine weitere definierbare
Nebenbedingung zutrifft. Die Reaktion von Triggern kann sehr
unterschiedlich sein. Sie können wie Constraints und Asserti-
ons überprüfen, ob das Ereignis erlaubt werden soll. Trigger
haben aber auch die Möglichkeit, Datenänderungen nach ihren
Wünschen wieder zu verändern und weitere Aktionen in ande-
ren Tabellen anzustoßen. Ein konkretes Beispiel ist, dass bei ei-
ner Einfüge-Aktion der Name des Nutzers und der eingefügte
Wert in eine Protokolltabelle eingetragen werden.
Trigger
6.6
Änderungen von Tabellenstrukturen
Im Kapitel 2 wurde gesagt, dass Software häufig inkrementell
entwickelt wird. Dabei wird in jedem Inkrement neue Funktio-
nalität entwickelt und mit der vorhandenen verknüpft. Dies
bedeutet für Tabellen, dass sie verändert werden müssen, neue
Spalten hinzukommen, alte gelöscht werden und sich
Constraints verändern. Generell bleibt dazu allerdings festzu-
halten, dass man möglichst wenige Veränderungen an Tabellen
vornehmen sollte, da diese nicht immer möglich sind und
durch die aufgebauten Abhängigkeiten zwischen den Tabellen
sehr fehlerträchtig sein können. Für die inkrementelle Entwick-
lung heißt dies, dass man statt auf Tabellenveränderungen eher
auf Ergänzungen existierender Tabellen und dem Hinzufügen
neuer Tabellen bei steigender Funktionalität zielen sollte.
Betrachtet werden wieder die Tabellen aus Abb. 6-1. Es soll eine
Spalte „Klasse“ in der Tabelle Verkaeufer ergänzt werden, in
der die Gehaltsklasse steht. Dabei sollen Personen mit einem
Gehalt kleiner 1600 in der Klasse A, mit einem Gehalt kleiner
2000 in der Klasse B und die restlichen Personen in der Klasse C
eingeordnet werden. Der Befehl zur Veränderung der Tabellen-
struktur heißt ALTER . Werden nur Informationen ergänzt, sieht
die Syntax genau wie bei der Definition der Tabelle aus. Im
Folgenden wird noch ein Constraint hinzugefügt, so dass als
Gehaltsklasse nur A, B und C zugelassen sind.
ALTER TABLE Verkaeufer ADD(
Klasse VARCHAR(1),
CONSTRAINT Klassenwerte CHECK (Klasse='A'
OR Klasse ='B' OR Klasse ='C')
)
Tabellenstruktu-
ren sollen nicht
geändert werden
Ergänzung von
Tabellen oft un-
problematisch
140
Search WWH ::




Custom Search