在同一张表中,我必须将一列的值迁移到新的一列;我想创建一个新列,用其他列的值填充它并删除已迁移的旧列,只有在尚未创建新列时才会发生这种情况。
<changeSet author="xxxx" id="00021">
<preConditions onFail="MARK_RAN">
<not>
<columnExists schemaName="schema" tableName="talbee" columnName="new_table"/>
</not>
</preConditions>
<addColumn schemaName="schema" tableName="new_table">
<column name="new_column" type="text"/>
</addColumn>
<sql>UPDATE table_name SET new_column = old_column</sql>
<dropColumn
catalogName="cat"
columnName="old_column"
schemaName="schema"
tableName="table_name">
<column name="old_column"/>
</dropColumn>
</changeSet>
Run Code Online (Sandbox Code Playgroud)
我删除旧列的方式是否正确?
只重命名该列会更好吗?
是的,重命名现有列更合理。您可以使用<columnExists>前提条件然后<renameColumn>进行更改。
<changeSet author="xxxx" id="00021">
<preConditions onFail="MARK_RAN">
<tableExists tableName="table_name"/>
<columnExists tableName="table_name" columnName="old_column"/>
<not>
<columnExists tableName="table_name" columnName="new_column"/>
</not>
</preConditions>
<renameColumn tableName="table_name" oldColumnName="old_column" newColumnName="new_column"
columnDataType="text"/>
</changeSet>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6907 次 |
| 最近记录: |