是否可以为变更集的单个元素创建两个前提条件?就像在SQL Server数据库中运行changelog文件时生成一列,在Oracle数据库中运行changelog文件时生成另一列一样。例如,以这种方式:
... || datainputForm.get('testGroup.t3').errors"
答案 0 :(得分:1)
无法在条件内创建列。
如果我了解您的问题,那么您有两个(也许更多)选择:
为dbms创建属性,并按以下方式使用它们:
<property dbms="oracle" name="autoincrement" value="true" />
<property dbms="oracle" name="autoincrementType" value="NUMBER" />
<property dbms="mssql" name="autoincrement" value="false" />
<property dbms="mssql" name="autoincrementType" value="FLOAT" />
<changeSet id="create_a_table" author="system">
<createTable tableName="a_table">
<column name="a_column" autoIncrement="${autoincrement}" type="${autoincrementType}" />
</createTable>
</changeSet>
我没有测试过,这只是解决问题的方法。
答案 1 :(得分:0)
这似乎是不可能的,但是另一个好的解决方案是为这些单个元素创建变更集。在此示例中,可能是:
<changeSet author="Me" id="1528876614155">
<createTable tableName="DAILY DATA">
<column name="ID" type="NUMBER"/>
</createTable>
</changeset>
<changeSet author="Me" id="1528876614156">
<preConditions onFail="MARK_RAN" onSqlOutput="TEST">
<dbms type="oracle" />
</preConditions>
<addColumn tableName="DAILY_DATA">
<column name="VALUE" type="NUMBER"/>
</addColumn>
</changeset>
<changeSet author="Me" id="1528876614157">
<preConditions onFail="MARK_RAN" onSqlOutput="TEST">
<dbms type="mssql" />
</preConditions>
<addColumn tableName="DAILY_DATA">
<column name="VALUE" type="NUMBER"/>
</addColumn>
</changeset>