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.
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 (#PCDATA) ATTRIBUTE name string subject string version string ignoreError bool
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. |
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 EMPTY ATTRIBUTE name string subject string version string ignoreError bool oldname string
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"). |
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 EMPTY ATTRIBUTE name string subject string version string ignoreError bool
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. |
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 EMPTY ATTRIBUTE name string subject string version string ignoreError bool property string value string oldvalue string
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. |
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 EMPTY ATTRIBUTE version string ignoreError bool dbms string
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. |
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.
Thomas Meyer, www.yanaframework.net