>> Inhaltsverzeichnis >> Artikel

Aktualisierungen (ChangeLog)

Dieser Abschnitt definiert die Syntax aller Elemente die notwendig sind, um signifikante Änderungen der Datenbank nachzuvollziehen, welche eine Aktualisierung der physischen Datenbankstruktur erfordern. Das schließt kürzlich erstellte, umbenannte, modifizierte und gelöschte Datenbankobjekte ein. Für weitere Aktionen, welche durch diese Definition nicht abgedeckt sind, können SQL-Anweisungen können angegeben wird. Implementierungen können eine Funktion bereitstellen, welche die erforderlichen SQL-Anweisungen generiert, um eine gegebene Datenbank auf eine spätere Version des XDDL-Dokumentes zu aktualisieren. Das ChangeLog sollte jede Information enthalten, die notwendig, ist um solch eine Aktion durchzuführen.

Element changelog

  ELEMENT changelog (create|rename|drop|update|sql)*
  
Beschreibung

Das Element changelog einer Datenbankdefinition wird benutzt, um Änderungen zu dokumentieren. Updates müssen in absteigender Reihenfolge nach ihrer Versionsnummer sortiert sein. Dies bedeutet, dass das erste Element stets der letzten Änderung entspricht.
Die Aktualisierungen enthalten den Typ der Änderung, eine Versionsnummer, und das geänderte Element. Eine Beschreibung der Änderung kann als PCDATA hinzugefügt werden.

Implementierung

Das ChangeLog kann für automatisierte Aktualisierungen der Datenbank verwendet werden. Der Implementierung kann eine Anwendung zur Verfügung stellen, welche das ChangeLog analysiert und das Schema der Datenbank von einer gegebenen Versionsnummer auf eine spätere Version aktualisiert. Diese Implementierung sollte versuchen, alle Änderungen innerhalb einer Transaktion durchzuführen. Im Fall eines nicht behebbaren Fehlers, sollte sie versuchen, sämtliche Änderungen zurückzunehmen.

Element create

  ELEMENT create (#PCDATA)
  ATTRIBUTE
       name        string
       subject     string
       version     string
       ignoreError bool
  
Attribute
Attribut Typ Pflicht Default Beschreibung
name string yes n/a Eindeutiger Name des geänderten Objektes. Sollte kleingeschrieben und ein valider XML-, SQL-Bezeichner sein.
subject string yes n/a table | column | index | view | sequence | trigger | constraint
version string - n/a Die Version, auf welche sich der Eintrag bezieht.
ignoreError bool - no Wird verwendet, um der Funktion, welche die Aktualisierung durchführt, mittzuteilen, wie diese reagieren soll, falls dieser Schritt während der Aktualisierung der Datenbankstruktur einen Fehler verursacht. Für den Wert "yes" sollte die Aktualisierung der Datenbank fortgesetzt werden, selbst wenn dieser Schritt fehlschlägt. Für den Wert "no" sollte die Aktualisierung gestoppt und alle vorherigen Änderungen zurückgenommen werden.
Beschreibung

Dokumentiert die Erstellung eines neuen Datenbankelements. Der Typ des Elements wird als Attribut "subject" gespeichert. Das Element selbst wird über das Attribut "name" identifiziert. Der Name muss ein eindeutiger Bezeichner des Elements sein. Wo erforderlich muss dieser die Namensräume spezifizieren, innerhalb derer der Name des Elements eindeutig ist. In diesem Fall muss das Zeichen "." als Trennzeichen verwendet werden. Die Implementierung kann einen Fehler melden, wenn das Element nicht gefunden wurde oder nicht eindeutig ist. Der PCDATA-Bereich des Elements kann zu Dokumentationszwecken verwendet werden und beliebigen Text enthalten.

Element rename

  ELEMENT rename EMPTY
  ATTRIBUTE
       name        string
       subject     string
       version     string
       ignoreError bool
       oldname     string
  
Attribute
Attribut Typ Pflicht Default Beschreibung
name string yes n/a Eindeutiger Name des geänderten Objektes. Sollte kleingeschrieben und ein valider XML-, SQL-Bezeichner sein.
subject string yes n/a table | column | index | view | sequence | trigger | constraint
version string - n/a Die Version, auf welche sich der Eintrag bezieht.
ignoreError bool - no Wird verwendet, um der Funktion, welche die Aktualisierung durchführt, mittzuteilen, wie diese reagieren soll, falls dieser Schritt während der Aktualisierung der Datenbankstruktur einen Fehler verursacht. Für den Wert "yes" sollte die Aktualisierung der Datenbank fortgesetzt werden, selbst wenn dieser Schritt fehlschlägt. Für den Wert "no" sollte die Aktualisierung gestoppt und alle vorherigen Änderungen zurückgenommen werden.
oldname string - n/a Vorheriger Name des umbenannten Objektes. Hinweis: Für Tabellenspalten muss der Name den Namen der Tabelle enthalten ("table.column").
Beschreibung

Dokumentiert die Umbenennung eines existierenden Datenbankelements. Der Typ des Elements wird als Attribut "subject" gespeichert. Das Element selbst wird über das Attribut "name" identifiziert. Der vorherige Name des Elements wird als Attribut "oldname" gespeichert. Der Name muss ein eindeutiger Bezeichner des Elements sein. Wo erforderlich muss dieser die Namensräume spezifizieren, innerhalb derer der Name des Elements eindeutig ist. In diesem Fall muss das Zeichen "." als Trennzeichen verwendet werden. Die Implementierung kann einen Fehler melden, wenn das Element nicht gefunden wurde oder nicht eindeutig ist. Der PCDATA-Bereich des Elements kann zu Dokumentationszwecken verwendet werden und beliebigen Text enthalten.

Element drop

  ELEMENT drop EMPTY
  ATTRIBUTE
       name        string
       subject     string
       version     string
       ignoreError bool
  
Attribute
Attribut Typ Pflicht Default Beschreibung
name string yes n/a Eindeutiger Name des geänderten Objektes. Sollte kleingeschrieben und ein valider XML-, SQL-Bezeichner sein.
subject string yes n/a table | column | index | view | sequence | trigger | constraint
ignoreError bool - no Wird verwendet, um der Funktion, welche die Aktualisierung durchführt, mittzuteilen, wie diese reagieren soll, falls dieser Schritt während der Aktualisierung der Datenbankstruktur einen Fehler verursacht. Für den Wert "yes" sollte die Aktualisierung der Datenbank fortgesetzt werden, selbst wenn dieser Schritt fehlschlägt. Für den Wert "no" sollte die Aktualisierung gestoppt und alle vorherigen Änderungen zurückgenommen werden.
version string - n/a Die Version, auf welche sich der Eintrag bezieht.
Beschreibung

Dokumentiert die Löschung eines existierenden Datenbankelements. Der Typ des Elements wird als Attribut "subject" gespeichert. Das Element selbst wird über das Attribut "name" identifiziert. Der Name muss ein eindeutiger Bezeichner des Elements sein. Wo erforderlich muss dieser die Namensräume spezifizieren, innerhalb derer der Name des Elements eindeutig ist. In diesem Fall muss das Zeichen "." als Trennzeichen verwendet werden. Die Implementierung kann einen Fehler melden, wenn das Element nicht gefunden wurde oder nicht eindeutig ist. Der PCDATA-Bereich des Elements kann zu Dokumentationszwecken verwendet werden und beliebigen Text enthalten.

Eine typische Situation, in welcher das Attribut "ignoreError" mit dem Wert "yes" üblicherweise verwendet wird ist die Löschung eines Elements. Gewöhnlich soll eine Datenbankaktualisierung nicht fehlschlagen, wenn ein Element nicht gelöscht werden kann, weil es nicht (mehr) existiert.

Beachten Sie, dass einige DBMS außer Stande sind, gelöschte Datenbankelemente wiederherzustellen. Im Fehlerfall kann diese Einschränkung Auswirkungen auf das Verhalten der Implementierung haben, welche die Datenbankstruktur aktualisiert.

Element update

  ELEMENT update EMPTY
  ATTRIBUTE
       name        string
       subject     string
       version     string
       ignoreError bool
       property    string
       value       string
       oldvalue    string
  
Attribute
Attribut Typ Pflicht Default Beschreibung
name string yes n/a Eindeutiger Name des geänderten Objektes. Sollte kleingeschrieben und ein valider XML-, SQL-Bezeichner sein.
subject string yes n/a table | column | index | view | sequence | trigger | constraint
version string - n/a Die Version, auf welche sich der Eintrag bezieht.
ignoreError bool - no Wird verwendet, um der Funktion, welche die Aktualisierung durchführt, mittzuteilen, wie diese reagieren soll, falls dieser Schritt während der Aktualisierung der Datenbankstruktur einen Fehler verursacht. Für den Wert "yes" sollte die Aktualisierung der Datenbank fortgesetzt werden, selbst wenn dieser Schritt fehlschlägt. Für den Wert "no" sollte die Aktualisierung gestoppt und alle vorherigen Änderungen zurückgenommen werden.
property string - n/a Gibt an welche Eigenschaft des Objektes aktualisiert worden ist.
value string - n/a Der neue Wert der Eigenschaft, welche aktualisiert wird. Die Syntax dieses Attributs kann durch die Implementierung festgelegt werden. Der Wert kann ein serialisierter Text sein.
oldvalue string - n/a Der alte Wert der geänderten Eigenschaft. Die Syntax dieses Attributs kann durch die Implementierung festgelegt werden. Der Wert kann ein serialisierter Text sein.
Beschreibung

Dokumentiert die Änderung eines existierenden Datenbankelements. Der Typ des Elements wird als Attribut "subject" gespeichert. Das Element selbst wird über das Attribut "name" identifiziert. Der Name muss ein eindeutiger Bezeichner des Elements sein. Wo erforderlich muss dieser die Namensräume spezifizieren, innerhalb derer der Name des Elements eindeutig ist. In diesem Fall muss das Zeichen "." als Trennzeichen verwendet werden. Die Implementierung kann einen Fehler melden, wenn das Element nicht gefunden wurde oder nicht eindeutig ist. Der PCDATA-Bereich des Elements kann zu Dokumentationszwecken verwendet werden und beliebigen Text enthalten. Wo verfügbar kann die geänderte Eigenschaft (property), sowie deren alter (oldvalue) und neuer Wert (value) angegeben werden.

Element sql

  ELEMENT sql EMPTY
  ATTRIBUTE
       version     string
       ignoreError bool
       dbms        string
  
Attribute
Attribut Typ Pflicht Default Beschreibung
dbms string - generic Der Name des Ziel-DBMS. Der Wert "generic" bedeutet, dass die Definition für jedes DBMS zutreffend ist. Gewöhnlich wird das als Rückfalloption für DBMS verwendet, an welche Sie entweder beim Erstellen der Datenbankstruktur noch nicht gedacht haben, oder welche das fragliche Feature nicht unterstützen.
version string - n/a Die Version, auf welche sich der Eintrag bezieht.
ignoreError bool - no Wird verwendet, um der Funktion, welche die Aktualisierung durchführt, mittzuteilen, wie diese reagieren soll, falls dieser Schritt während der Aktualisierung der Datenbankstruktur einen Fehler verursacht. Für den Wert "yes" sollte die Aktualisierung der Datenbank fortgesetzt werden, selbst wenn dieser Schritt fehlschlägt. Für den Wert "no" sollte die Aktualisierung gestoppt und alle vorherigen Änderungen zurückgenommen werden.
Beschreibung

Dokumentiert eine nutzerdefinierte SQL-Anweisung, welche ausgeführt werden soll. Die Ausführung kann auf einen bestimmten DBMS beschränkt werden. SQL-Anweisungen können für jegliche weiteren Aktionen verwendet werden, welche durch andere Elemente dieser Definition nicht abgedeckt sind. Z.Bsp. um Daten in eine kürzlich erstellte Tabelle zu kopieren. Der PCDATA-Bereich des Elements muss den SQL-Code enthalten, welcher gleichzeitig als Dokumentation dient.

Autor: Thomas Meyer, www.yanaframework.net