使用liquibase changeset和yaml格式检查dml文件中多个记录的前提条件

时间:2018-04-16 13:58:43

标签: yaml liquibase

我有一个前提条件,使用Liquibase changeSet和YAML格式检查DML文件中的多条记录:

我要求添加检查记录应该存在的前提条件:

- changeSet:
  id: 18.5.1
  author: saggarwal
  comment: PROD-5303 | DELETE | TEMPLATE_COLUMN_MAPPPING | ATT
  preConditions: 
    - onFail: MARK_RAN
    - sqlCheck:
    -not:
        expectedResult: 0
        sql: select count(*) from es_email;
  changes:
    - delete: 
        tableName: es_email
        where: template_id =select id from abc where name= 'XYZ';

但它不起作用。我们怎么检查这个?请举一些例子。
在XML中我们喜欢:

<preConditions onFail="MARK_RAN">
<not>
    <sqlCheck expectedResult="0">
        select count(*) from es_email;
    </sqlCheck>
</not>
</preConditions>

......但在YAML?

1 个答案:

答案 0 :(得分:1)

YAML的第一个问题是-中的-not:之后没有空格,因此它doesn't parse。还有其他问题,其中最明显的是,在你的XML中,sqlChecknot的孩子,但在你的YAML中他们是兄弟姐妹。

Liquibase中YAML的文档非常糟糕。然而,谷歌搜索&#34; Liquibase YAML sqlCheck&#34;我们引导我们the tests,这是一个快速调查,建议对您的YAML进行以下改进:

preConditions: 
  - onFail: MARK_RAN
  - not:
    - sqlCheck:
        expectedResult: 0
        sql: select count(*) from es_email;