Мы будем использовать значения параметров жидкости для управления типами столбцов на нескольких поддерживаемых ядрах базы данных. Я хотел бы иметь возможность указывать типы столбцов в файле изменений. Во-первых, для всех dbms и (то есть что-то из java.sql.Types. *), А затем перезаписывайте его для некоторых конкретных.Обработка значений нескольких параметров в липибазе
Это может выглядеть следующим образом:
<property name="DATETIME.type" value="TIMESTAMP"/>
<property name="DATETIME.type" value="DATE" dbms="oracle" />
Но LiquiBase, кажется, берет первое найденное значение параметра (т оракула типа TIMESTAMP берется в приведенном выше примере). Могу ли я надежно достичь желаемого результата, просто изменив порядок строк, как это ?:
<property name="DATETIME.type" value="DATE" dbms="oracle" />
<property name="DATETIME.type" value="TIMESTAMP"/>
EDIT: То, что я хотел бы архивировать, является поддержка новых баз данных без необходимости изменения типов сопоставление - поэтому использовать типы linibase default (java.sql.Types. *) для баз данных, для которых не требуется совместимость с нашим устаревшим средством db-версии.
В настоящее время мы имеем более 1500 наборов изменений в списке изменений, импортируемых из нашей БД. Я не могу себе представить, как реализовать независимость базы данных таким образом. Наш Oracle «Integer» представлен «Число (9)», а не «Номер» (10), «LONGVARBINARY» с «IMAGE» на mssql. И я должен обеспечить совместимость версий linibase с нашим предыдущим унаследованным db-управлением версиями. –
Я думаю - вообще - независимость базы данных (или должна) уже встроена в липибазу, так что вам вообще не придется об этом думать. Liquibase поставляется с базальными диалектами, и в то время как он анализирует ваш журнал изменений, он переводит базу данных в нужный тип данных для конкретной базы данных. Так оно и должно работать. Но если у вас есть требования, требующие других типов, вам, вероятно, придется использовать что-то вроде 'preConditions' для его обработки. – Jens
Другим подходом может быть использование системы расширения, которую предлагает Liquibase и перезаписывающая обработка по умолчанию с вашими конкретными требованиями. Но я не знаю, позволяет ли система расширения перехватить обработку типов ... – Jens