Liquibase脚本删除或清除列中的所有数据

时间:2016-10-14 10:43:17

标签: database liquibase

使用 liquibase ,liquibase中是否有一种方法可以清除CharSkill列中的所有数据,而不依赖于表的内容?

由于我将此部署到多个用户,因此内容可能会有所不同,但列是不变的。

我可以使用drop column然后添加相同的列,但我想知道它是否是最佳方式。

BEFORE:

用户A的角色表:

+--------+----------+-----------+
| CharID | CharName | CharSkill |
+--------+----------+-----------+
|      1 | Mickey   | Run       |
|      2 | Minnie   | Jump      |
|      3 | Donald   | Kick      |
+--------+----------+-----------+

用户B的角色表:

+--------+----------+-----------+
| CharID | CharName | CharSkill |
+--------+----------+-----------+
|      1 | Goofy    | Punch     |
|      2 | Daisy    | Laugh     |
|      3 | Pluto    | Sing      |
|      4 | Stitch   | Crawl     |
+--------+----------+-----------+

AFTER:

用户A的角色表:

+--------+----------+-----------+
| CharID | CharName | CharSkill |
+--------+----------+-----------+
|      1 | Mickey   |           |
|      2 | Minnie   |           |
|      3 | Donald   |           |
+--------+----------+-----------+

用户B的角色表:

+--------+----------+-----------+
| CharID | CharName | CharSkill |
+--------+----------+-----------+
|      1 | Goofy    |           |
|      2 | Daisy    |           |
|      3 | Pluto    |           |
|      4 | Stitch   |           |
+--------+----------+-----------+

1 个答案:

答案 0 :(得分:4)

没有where子句的简单<update>应该这样做:

<changeSet author="loren" id="1">
    <update tableName="character">
        <column name="charskill"/>
    </update>
</changeSet>

或者只使用<sql>标记:

<changeSet author="loren" id="1">
    <sql>update character set charskill=null</sql>
</changeSet>