diff --git a/others/db_changes/readme.adoc b/others/db_changes/readme.adoc index fe12e5629e34bc402b08d778d49d32dfac34c490..4763f6c4043e204b726084c3b60aed0e1ecce837 100644 --- a/others/db_changes/readme.adoc +++ b/others/db_changes/readme.adoc @@ -1,86 +1,87 @@ -liquibase-readme -================ - -== Structure within ADITO -=== in theory - -When using liquibase in an ADITO-System, your project structure _should_ look like this: ----- -PROJECTHOME/others/db_changes/masterChangelog.xml -PROJECTHOME/others/db_changes/struct/ -PROJECTHOME/others/db_changes/data/ -PROJECTHOME/others/db_changes/liquibase.properties ----- - -The file `masterChangelog.xml` contains a list of all changes (well, in fact more like a list of all changelog-files). The structure could look like this: -[source,xml] ----- -<?xml version="1.1" encoding="UTF-8" standalone="no"?> -<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> - <include file="struct/create_org.xml"/> - <include file="data/example_org.xml"/> -</databaseChangeLog> ----- - -TIP: Keep in mind that the header-information can change, visit therefore the liquibase-website: http://www.liquibase.org Specific: the XML-format definition: http://www.liquibase.org/documentation/xml_format.html - -So, thats where all our changes are located - but what about the changes _itself_? -As you can think of, they're stored in files located in the folders `struct` for DDL-stuff like _create_, _alter_ etc. -and `data` for DML-stuff like _insert_, _update_ etc. - -If you want to know what to do add in these files take a look at the official liquibase documentation for futher information how to fill these XML files: http://www.liquibase.org/documentation/index.html - -IMPORTANT: Always remember that you might have to define some rollback-entries. + -This is e.g. not needed for create-entries but for others like insert. - -So, whats about that `liquibase.properties` file? The file is needed to specify some data here, e.g. the driver-name, classpath (of the driver), jdbc-url, etc. -You want to store these information there because otherwise you'd need to specify them on every call of liquibase. Not cool. - -Now you're ready to run commands like `liquibase update` in the `PROJECTHOME/others/db_changes` folder. - -=== in practice - -.Let's say whe want to add a new table `FOOBAR` with some demo-data. We need to: -* create a new file in the struct-folder; e.g. `create_FOOBAR.xml` -* fill the file with changesets that will create a table -* add `include`-tag in the `masterChangelog.xml` for the created file -* create a new file in the data-foler; e.g. `demoData_FOOBAR.xml` -* fill the file with changesets that will insert data into the table and define *rollback-entries* -* add `include`-tag in the `masterChangelog.xml` for the created file -* to apply the changes simply run `liquibase update` - -For example one featurepackage "add contact management" could contain several files itself: ----- - create_org.xml - create_pers.xml - create_relation.xml ----- -On the other hand, several featurepackages cannot be contained in one changelog-file. - - -== How to use it -Normally everything you need is provided by the project-template and the existing files in the git-repository. -Therefore it's easy to use and you can start immediately. - -.Keep in mind: -* run `liquibase update` to apply possible changes after merging something into your repository -* apply modifications on the database always with liquibase; do not write a create-script in SQL. Write some changesets and execute them -* set correct `author`- and `id`-attributes in your changelog-files - - - -== FAQ -[qanda] -What about unicode-columns like `NVARCHAR` or `NCLOB`?:: - Simply define them in your changesets; This is something which is not completely verified: - Maybe columns like `NCLOB` cause problems in some DBMS like _MS SQL Server_ -What if i swtich between branches and want to switch between different database-states?:: - This is something that needs to be defined. Possible ways: rollback or recreate your database entirely -Is it possible to write an update-changeset where I can use a preparedStatement in the where-clause?:: - This needs to be analysed and (the result) added here. - - - ---- - +liquibase-readme +================ + +== Structure within ADITO +=== in theory + +When using liquibase in an ADITO-System, your project structure _should_ look like this: +---- +PROJECTHOME/others/db_changes/masterChangelog.xml +PROJECTHOME/others/db_changes/struct/ +PROJECTHOME/others/db_changes/data/ +PROJECTHOME/others/db_changes/misc/ +PROJECTHOME/others/db_changes/liquibase.properties +---- + +The file `masterChangelog.xml` contains a list of all changes (well, in fact more like a list of all changelog-files). The structure could look like this: +[source,xml] +---- +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <include file="struct/create_org.xml"/> + <include file="data/example_org.xml"/> +</databaseChangeLog> +---- + +TIP: Keep in mind that the header-information can change, visit therefore the liquibase-website: http://www.liquibase.org Specific: the XML-format definition: http://www.liquibase.org/documentation/xml_format.html + +So, thats where all our changes are located - but what about the changes _itself_? +As you can think of, they're stored in files located in the folders `struct` for DDL-stuff like _create_, _alter_ etc. +and `data` for DML-stuff like _insert_, _update_ etc. + +If you want to know what to do add in these files take a look at the official liquibase documentation for futher information how to fill these XML files: http://www.liquibase.org/documentation/index.html + +IMPORTANT: Always remember that you might have to define some rollback-entries. + +This is e.g. not needed for create-entries but for others like insert. + +So, whats about that `liquibase.properties` file? The file is needed to specify some data here, e.g. the driver-name, classpath (of the driver), jdbc-url, etc. +You want to store these information there because otherwise you'd need to specify them on every call of liquibase. Not cool. + +Now you're ready to run commands like `liquibase update` in the `PROJECTHOME/others/db_changes` folder. + +=== in practice + +.Let's say whe want to add a new table `FOOBAR` with some demo-data. We need to: +* create a new file in the struct-folder; e.g. `create_FOOBAR.xml` +* fill the file with changesets that will create a table +* add `include`-tag in the `masterChangelog.xml` for the created file +* create a new file in the data-foler; e.g. `demoData_FOOBAR.xml` +* fill the file with changesets that will insert data into the table and define *rollback-entries* +* add `include`-tag in the `masterChangelog.xml` for the created file +* to apply the changes simply run `liquibase update` + +For example one featurepackage "add contact management" could contain several files itself: +---- + create_org.xml + create_pers.xml + create_relation.xml +---- +On the other hand, several featurepackages cannot be contained in one changelog-file. + + +== How to use it +Normally everything you need is provided by the project-template and the existing files in the git-repository. +Therefore it's easy to use and you can start immediately. + +.Keep in mind: +* run `liquibase update` to apply possible changes after merging something into your repository +* apply modifications on the database always with liquibase; do not write a create-script in SQL. Write some changesets and execute them +* set correct `author`- and `id`-attributes in your changelog-files + + + +== FAQ +[qanda] +What about unicode-columns like `NVARCHAR` or `NCLOB`?:: + Simply define them in your changesets; This is something which is not completely verified: + Maybe columns like `NCLOB` cause problems in some DBMS like _MS SQL Server_ +What if i swtich between branches and want to switch between different database-states?:: + This is something that needs to be defined. Possible ways: rollback or recreate your database entirely +Is it possible to write an update-changeset where I can use a preparedStatement in the where-clause?:: + This needs to be analysed and (the result) added here. + + + +--- + ~have~ ~a~ ~nice~ ~day~ ~:-)~ \ No newline at end of file