代码之家  ›  专栏  ›  技术社区  ›  Mad Scientist

liquibase删除分号

  •  1
  • Mad Scientist  · 技术社区  · 6 年前

    我有一个liquibase changelog文件,其中包含一些insert语句,这些语句是我用标记完成的,但是当我从changelog(对于SQL Server数据库)生成一个SQL文件时,它会删除语句末尾的分号。在我的changelog文件中,如下所示:

    <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
    

    为什么会发生这种情况?我能做些什么来防止它发生?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Mad Scientist    6 年前

    我发现了,我只是想补充一下 splitStatements="false" <sql> 标签,它根本没有格式化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>