Ich verwende Liquibase, um MSSQL- und Oracle-Implementierungen einer Datenbank zu unterstützen. Die Datenbanken sind bereits vorhanden.Hinzufügen von Collate-Unterstützung zu Liquibase
Ich möchte Collate auf Tabellenspalten unterstützen. zB:
<createTable tableName="my_table">
<column autoIncrement="true" name="id" type="int">
<constraints nullable="false"/>
</column>
<column name="name" type="varchar(50)"/>
<ext:column name="description" type="varchar(250)" collate="Latin1_General_CS_AS"/>
</createTable>
Ich möchte das neue Attribut für MSSQL nur anfänglich verarbeiten. Ich habe gesehen, dass das modifySql
-Tag eine Möglichkeit bietet, collate
zu unterstützen, ohne Erweiterungen zu verwenden. Ich möchte auch andere ähnliche Änderungen vornehmen und bevorzuge die Idee, Liquibase zu erweitern.
Ich habe andere Erweiterungen angeschaut und finde kein Beispiel dafür, wie man bestehende Anweisungen schön erweitert. Ich denke dabei Folgendes zu tun: Schreiben benutzerdefinierte CreateTableChange
, CreateTableStatement
und CreateTableGenerator
Klassen, die den Kern CreateTableChange
, CreateTableStatement
und CreateTableGenerator
erweitern. Ersetzen Sie die generateStatements
Methode in CreateTableChange
, um benutzerdefinierte CreateTableStatement
Instanzen zu erstellen und generateSql
in CreateTableGenerator
zu ersetzen.
Ich möchte wissen, ob dies der richtige Ansatz für die Erweiterung vorhandener Änderungsklassen ist. Ich bin besorgt, dass ich nicht die Basis-Implementierungen von generateStatements
und generateSql
aufrufen kann, aber die Implementierung kopieren und einfügen muss, und es sieht aus wie ein neuer Änderungstyp und nicht wie eine Erweiterung eines bestehenden.