Entwicklung/Datenbankversionierung: Unterschied zwischen den Versionen

K
(Triggerhandling neu)
Zeile 24: Zeile 24:
== Trigger & Stored Procedures ==
== Trigger & Stored Procedures ==


Um das Versionierungskonzept vollständig durchzuhalten, müssten eigentlich auch alle Änderungen an Triggern und Stored Procedures über die Mutationen erfolgen. Es bestünde dann allerdings die Gefahr von Inkonsistenzen zwischen den Mutationen den kompletten Funktionsdefintionen in maintain.php, die der Übersicht halber weiter benötigt werden.
Um das Versionierungskonzept vollständig durchzuhalten, müssten eigentlich auch alle Änderungen an Triggern und Stored Procedures über die Mutationen erfolgen. Es bestünde dann allerdings die Gefahr von Inkonsistenzen zwischen den Mutationen den kompletten Funktionsdefinitionen in maintain.php, die der Übersicht halber weiter benötigt werden.


Solange es kein besseres Konzept gibt, wird daher wie folgt vorgegangen:
Solange es kein besseres Konzept gibt, wird daher wie folgt vorgegangen:


* Wenn eine Mutation geänderte/neue Trigger benötigt, die mit dem gleichen Codeupdate eingeführt werden, muss sie diese entweder zunächst definieren oder deren Funktionalität nachbilden (siehe z.B. Version 102: hier wird der neue sp_updateall_hiddenstat()-Code ausgeführt). Dies ist nötig, weil maintain.php erst ''nach'' den Mutationen durchläuft, da sie neue Datenbankfelder benötigen kann (Henne-Ei-Problem).
* Wenn eine Mutation geänderte/neue Trigger benötigt, die mit dem gleichen Codeupdate eingeführt werden, muss sie diese entweder zunächst definieren oder deren Funktionalität nachbilden (siehe z.B. Version 102: hier wird der neue sp_updateall_hiddenstat()-Code ausgeführt). Dies ist nötig, weil maintain.php erst ''nach'' den Mutationen durchläuft, da es neue Datenbankfelder benötigen kann (Henne-Ei-Problem).


* Bei Definition der Mutationen darauf achten, ob diese irgendwelchen SQL-Code enthalten der auf Trigger angewiesen ist. Wenn ja, entsprechende Maßnahmen ergreifen z.B.
* Bei Definition der Mutationen darauf achten, ob sie irgendwelchen SQL-Code enthalten der auf Trigger angewiesen ist. Wenn ja, entsprechende Maßnahmen ergreifen z.B.
** Diese Trigger in der Mutation neu anlegen, oder
** Diese Trigger in der Mutation neu anlegen, oder
** die Funktionalität der Trigger nachbilden, oder
** die Funktionalität der Trigger nachbilden, oder
2.505

Bearbeitungen