Liquibase 去除分号

Liquibase removes semicolons

我有一个 liquibase 更新日志文件,其中包含一些我用标签完成的插入语句,但不知何故,当我从更新日志(对于 SQL 服务器数据库)生成 SQL 文件时,它删除了语句末尾的分号。在我的变更日志文件中,它看起来像这样:

<changeSet author="Ferid (generated)" id="1528876614155-371-MSSQL-58">
   <preConditions onFail="MARK_RAN" onSqlOutput="TEST">
      <dbms type="mssql" />
   </preConditions>
   <sql>
        BEGIN TRAN;
        INSERT INTO pdc_matrix (pattern_id, prod_ins_level, mai_class_id, result_id, y_or_r, and_level) 
        values (1012, 'I', 41, (select res_id FROM result_def where mai_id = 41 and res_name='MAI_MPO'),0,1);
        INSERT INTO pdc_matrix (pattern_id, prod_ins_level, mai_class_id, result_id, y_or_r, and_level) 
        values (1012, 'A', 51, (select res_id FROM result_def where mai_id = 51 and res_name='MAI_OPE'),0,2);
        INSERT INTO pdc_matrix (pattern_id, prod_ins_level, mai_class_id, result_id, y_or_r, and_level) 
        values (1012, 'A', 52, (select res_id FROM result_def where mai_id = 52 and res_name='MAI_OPR'),0,3);
        commit;
   </sql>
   <rollback/>
</changeSet>  

但是从它生成的 SQL 文件看起来像这样:

-- Changeset C:/Users/Ferid/Documents/Box Sync/PRIVATE_Ferid/liquibase-3.5.5-bin/sdk/workspace/changelog/com/example/newChangelogModInserts.xml::1528876614155-371-MSSQL-58::Ferid (generated)
BEGIN TRAN
GO

INSERT INTO pdc_matrix (pattern_id, prod_ins_level, mai_class_id, result_id, y_or_r, and_level) 
values (1012, 'I', 41, (select res_id FROM result_def where mai_id = 41 and res_name='MAI_MPO'),0,1)
GO

INSERT INTO pdc_matrix (pattern_id, prod_ins_level, mai_class_id, result_id, y_or_r, and_level) 
values (1012, 'A', 51, (select res_id FROM result_def where mai_id = 51 and res_name='MAI_OPE'),0,2)
GO

INSERT INTO pdc_matrix (pattern_id, prod_ins_level, mai_class_id, result_id, y_or_r, and_level) 
values (1012, 'A', 52, (select res_id FROM result_def where mai_id = 52 and res_name='MAI_OPR'),0,3)
GO
commit
GO

为什么会发生这种情况,我该如何预防?

我发现了,我只需要在 <sql> 标签中添加 splitStatements="false",它根本没有格式化 SQL 语句:

<changeSet author="Ferid (generated)" id="1528876614155-371-MSSQL-58">
   <preConditions onFail="MARK_RAN" onSqlOutput="TEST">
      <dbms type="mssql" />
   </preConditions>
   <sql splitStatements="false">
    BEGIN TRAN;
    INSERT INTO pdc_matrix (pattern_id, prod_ins_level, mai_class_id, result_id, y_or_r, and_level) 
    values (1012, 'I', 41, (select res_id FROM result_def where mai_id = 41 and res_name='MAI_MPO'),0,1);
    INSERT INTO pdc_matrix (pattern_id, prod_ins_level, mai_class_id, result_id, y_or_r, and_level) 
    values (1012, 'A', 51, (select res_id FROM result_def where mai_id = 51 and res_name='MAI_OPE'),0,2);
    INSERT INTO pdc_matrix (pattern_id, prod_ins_level, mai_class_id, result_id, y_or_r, and_level) 
    values (1012, 'A', 52, (select res_id FROM result_def where mai_id = 52 and res_name='MAI_OPR'),0,3);
    commit;
   </sql>
   <rollback/>
</changeSet>