是否可以在YAML中使用Precondition我没有找到除此页面之外的任何来源http://www.liquibase.org/documentation/yaml_format.html
但我正在寻找相当于:
<changeSet id="addColumn-example">
<preConditions onFail="MARK_RAN">
<columnExists schemaName="earls"
tableName="category" columnName="display_name"/>
</preConditions>
<dropColumn columnName="display_name" schemaName="earls" tableName="category"/>
</changeSet>
所以我的自然翻译将是:
changeSet:
id: addColumn-example
author: francis
preConditions:
- columnExist:
schemaName: earls
tableName: category
columnName: display_name
changes:
- addColumn:
columns:
- column:
name: display_name
type: varchar(100)
但我在失败中失踪......
答案 0 :(得分:7)
这个主题很难记录,但经过多次尝试......你可以这样写:
databaseChangeLog:
- changeSet:
id: 1
author: pazfernando
preConditions:
- onFail: MARK_RAN
- tableExists:
schemaName: sa
tableName: PROVEEDORBIENSERVICIO
changes:
- renameTable:
newTableName: PROVEEDORBIENSERVICIO
oldTableName: PROVEEDORSERVICIO
schemaName: sa
我希望它有所帮助......再见
答案 1 :(得分:4)
以下似乎有效:
databaseChangeLog:
- changeSet:
id: 1
author: mraible
preConditions:
onFail: MARK_RAN
not:
sequenceExists:
schemaName: public
sequenceName: hibernate_sequence
changes:
- createSequence:
sequenceName: hibernate_sequence
答案 2 :(得分:0)
这可能与Liquibase 3.1.x不兼容,但应该在刚刚发布的3.2.0版本中运行。你的示例changeSet应该是正确的。
答案 3 :(得分:0)
sqlCheck条件的语法:
databaseChangeLog:
- changeSet:
id: changeSet-id
author: myName
preConditions:
- onFail: MARK_RAN
- sqlCheck:
expectedResult: 1
sql: "select count(*) from foo where some-condition"
changes:
- sql: "your sql script"
答案 4 :(得分:0)
DBMS前提条件
databaseChangeLog:
- changeSet:
id: 1
author: yourname
dbms: oracle,h2
changes:
- sql: "your sql script"
您可以看到,这不是真正的前提条件,但是我发现它的工作原理类似:如果数据库类型不匹配,则更改集将被忽略。