Databases Reference
In-Depth Information
Es ist jeweils eine logische Bedingung anzugeben, die nicht verletzt werden darf.
Die optionalen Attribute können beschreiben, dass die Assertion verzögert werden
kann (um z.B. eine Bedingung zu formulieren, die Aktionen in mehr als einer
Tabelle erfordert).
Das folgende Beispiel stellt sicher, dass einem Kunden die Zahlungsart 'B' für
»Bankeinzug« nur dann zugewiesen werden kann, wenn in der Datenbank sein
Bankkonto erfasst ist. 19
CREATE ASSERTION kunde_zahlart
CHECK (NOT EXISTS (
SELECT * FROM kunde k
WHERE zahlung = 'B'
AND NOT EXISTS (
SELECT * FROM girokonto g
WHERE g.kunden_nr = k.kunden_nr
)))
DEFERRABLE;
We n n d i e A n w e i s u n g CREATE ASSERTION nicht zur Verfügung steht, wie es bei vie-
len DBMS noch der Fall ist, muss man unter Umständen zum Hilfsmittel der
Datenbank-Trigger greifen, um eine tabellenübergreifende Integritätsbedingung
zu formulieren. 20 Das ist dann zwar eine prozedurale statt einer deklarativen
Lösung, aber immer noch besser, als das Problem in die Anwendungsprogrammie-
rung zu verlegen.
4.3.7 Entfernung von Datenbankobjekten
Sämtliche Datenbankobjekte, die mit irgendeiner Form einer CREATE-Anweisung
angelegt wurden ( CREATE TABLE , CREATE DOMAIN etc.), können aus der Datenbank
auch wieder entfernt werden. Dazu stehen Varianten der DROP-Anweisung zur
Ve r f ügung. Dabei ist grundsätzlich zu beachten, dass Datenbankobjekte selbst
auch einer Art referenzieller Integrität unterworfen sind. Tabellen oder Domänen
können ja von anderen Objekten aus referenziert werden.
Die Entfernung einer Datenbanktabelle geschieht beispielsweise mit der DDL-
Anweisung DROP TABLE . Sofern eine Tabelle an keiner definierten Beziehung teil-
nimmt und keine Datensichtdefinitionen auf sie Bezug nehmen, wird die Anwei-
sung ohne weiteres ausgeführt. Anders sieht es aus, wenn beispielsweise eine
Fremdschlüsselbeziehung zu der fraglichen Tabelle existiert.
19 Der hier vorgestellte Befehl CREATE ASSERTION konnte bisher nicht getestet werden, da kein
den Autoren zugängliches DBMS ihn unterstützt.
20 Vgl. Kapitel 7.
 
Search WWH ::




Custom Search